akanjs 0.0.1 → 2.0.0-beta.1
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/CODE_OF_CONDUCT.md +54 -0
- package/CONTRIBUTING.md +83 -0
- package/LICENSE +21 -0
- package/README.ko.md +244 -0
- package/README.md +237 -6
- package/base/base.ts +194 -0
- package/base/baseEnv.ts +162 -0
- package/base/index.ts +6 -0
- package/base/primitiveRegistry.ts +342 -0
- package/base/symbols.ts +11 -0
- package/base/types.ts +137 -0
- package/base/utils.ts +30 -0
- package/cli/application/application.command.ts +213 -0
- package/cli/application/application.interface.tsx +225 -0
- package/cli/application/application.runner.ts +359 -0
- package/cli/application/application.script.ts +244 -0
- package/cli/build.ts +25 -0
- package/cli/cloud/cloud.command.ts +48 -0
- package/cli/cloud/cloud.runner.ts +158 -0
- package/cli/cloud/cloud.script.ts +40 -0
- package/cli/guideline/guideline.command.ts +31 -0
- package/cli/guideline/guideline.prompt.ts +212 -0
- package/cli/guideline/guideline.runner.ts +53 -0
- package/cli/guideline/guideline.script.ts +33 -0
- package/cli/guidelines/___library/sharedUiStructureDescription.en.md +767 -0
- package/cli/guidelines/___library/utilUiStructureDescription.en.md +395 -0
- package/cli/guidelines/___lint/lintRuleDescription.en.md +64 -0
- package/cli/guidelines/___module/moduleStructureDescription.en.md +80 -0
- package/cli/guidelines/componentRule/componentRule.generate.json +131 -0
- package/cli/guidelines/componentRule/componentRule.instruction.md +637 -0
- package/cli/guidelines/cssRule/cssRule.generate.json +93 -0
- package/cli/guidelines/cssRule/cssRule.instruction.md +435 -0
- package/cli/guidelines/databaseModule/databaseModule.generate.json +51 -0
- package/cli/guidelines/databaseModule/databaseModule.instruction.md +612 -0
- package/cli/guidelines/docPageRule/docPageRule.generate.json +72 -0
- package/cli/guidelines/docPageRule/docPageRule.instruction.md +389 -0
- package/cli/guidelines/enumConstant/enumConstant.generate.json +24 -0
- package/cli/guidelines/enumConstant/enumConstant.instruction.md +232 -0
- package/cli/guidelines/framework/framework.generate.json +119 -0
- package/cli/guidelines/framework/framework.instruction.md +1110 -0
- package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
- package/cli/guidelines/modelConstant/modelConstant.generate.json +128 -0
- package/cli/guidelines/modelConstant/modelConstant.instruction.md +506 -0
- package/cli/guidelines/modelDictionary/modelDictionary.generate.json +108 -0
- package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +547 -0
- package/cli/guidelines/modelDocument/modelDocument.generate.json +129 -0
- package/cli/guidelines/modelDocument/modelDocument.instruction.md +536 -0
- package/cli/guidelines/modelService/modelService.generate.json +135 -0
- package/cli/guidelines/modelService/modelService.instruction.md +708 -0
- package/cli/guidelines/modelSignal/modelSignal.generate.json +201 -0
- package/cli/guidelines/modelSignal/modelSignal.instruction.md +552 -0
- package/cli/guidelines/modelStore/modelStore.generate.json +130 -0
- package/cli/guidelines/modelStore/modelStore.instruction.md +585 -0
- package/cli/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
- package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +604 -0
- package/cli/guidelines/modelUnit/modelUnit.generate.json +92 -0
- package/cli/guidelines/modelUnit/modelUnit.instruction.md +541 -0
- package/cli/guidelines/modelUtil/modelUtil.generate.json +93 -0
- package/cli/guidelines/modelUtil/modelUtil.instruction.md +752 -0
- package/cli/guidelines/modelView/modelView.generate.json +80 -0
- package/cli/guidelines/modelView/modelView.instruction.md +1005 -0
- package/cli/guidelines/modelZone/modelZone.generate.json +126 -0
- package/cli/guidelines/modelZone/modelZone.instruction.md +528 -0
- package/cli/guidelines/scalarConstant/scalarConstant.generate.json +106 -0
- package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +442 -0
- package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
- package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +273 -0
- package/cli/guidelines/scalarModule/scalarModule.generate.json +35 -0
- package/cli/guidelines/scalarModule/scalarModule.instruction.md +81 -0
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +108 -0
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +310 -0
- package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
- package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
- package/cli/index.js +11399 -0
- package/cli/index.ts +24 -0
- package/cli/library/library.command.ts +28 -0
- package/cli/library/library.runner.ts +69 -0
- package/cli/library/library.script.ts +39 -0
- package/cli/module/module.command.ts +35 -0
- package/cli/module/module.prompt.ts +18 -0
- package/cli/module/module.request.ts +319 -0
- package/cli/module/module.runner.ts +76 -0
- package/cli/module/module.script.ts +161 -0
- package/cli/package/package.command.ts +32 -0
- package/cli/package/package.runner.ts +64 -0
- package/cli/package/package.script.ts +35 -0
- package/cli/page/page.command.ts +14 -0
- package/cli/page/page.runner.ts +14 -0
- package/cli/page/page.script.ts +12 -0
- package/cli/scalar/scalar.command.ts +21 -0
- package/cli/scalar/scalar.prompt.ts +131 -0
- package/cli/scalar/scalar.runner.ts +38 -0
- package/cli/scalar/scalar.script.ts +16 -0
- package/cli/templates/__scalar/__model__/__model__.constant.ts +15 -0
- package/cli/templates/__scalar/__model__/__model__.dictionary.ts +19 -0
- package/cli/templates/__scalar/__model__/__model__.document.ts +15 -0
- package/cli/templates/app/akan.config.ts +14 -0
- package/cli/templates/app/capacitor.config.ts.template +8 -0
- package/cli/templates/app/common/commonLogic.ts +12 -0
- package/cli/templates/app/common/index.ts +10 -0
- package/cli/templates/app/env/env.client.debug.ts.template +7 -0
- package/cli/templates/app/env/env.client.develop.ts.template +7 -0
- package/cli/templates/app/env/env.client.local.ts.template +7 -0
- package/cli/templates/app/env/env.client.main.ts.template +7 -0
- package/cli/templates/app/env/env.client.testing.ts.template +7 -0
- package/cli/templates/app/env/env.client.ts +21 -0
- package/cli/templates/app/env/env.client.type.ts +16 -0
- package/cli/templates/app/env/env.server.debug.ts.template +7 -0
- package/cli/templates/app/env/env.server.develop.ts.template +9 -0
- package/cli/templates/app/env/env.server.local.ts.template +14 -0
- package/cli/templates/app/env/env.server.main.ts.template +9 -0
- package/cli/templates/app/env/env.server.testing.ts.template +6 -0
- package/cli/templates/app/env/env.server.ts +20 -0
- package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +17 -0
- package/cli/templates/app/lib/___appName__/__appName__.service.ts +13 -0
- package/cli/templates/app/lib/___appName__/__appName__.signal.ts +17 -0
- package/cli/templates/app/lib/___appName__/__appName__.store.ts +15 -0
- package/cli/templates/app/lib/option.ts +17 -0
- package/cli/templates/app/main.ts +16 -0
- package/cli/templates/app/package.json.template +5 -0
- package/cli/templates/app/page/_index.tsx +172 -0
- package/cli/templates/app/page/_layout.tsx +32 -0
- package/cli/templates/app/page/styles.css.template +53 -0
- package/cli/templates/app/public/favicon.ico +0 -0
- package/cli/templates/app/public/logo.png +0 -0
- package/cli/templates/app/srvkit/backendLogic.ts +12 -0
- package/cli/templates/app/srvkit/index.ts +10 -0
- package/cli/templates/app/tsconfig.json.template +21 -0
- package/cli/templates/app/ui/UiComponent.ts +16 -0
- package/cli/templates/app/ui/index.ts +10 -0
- package/cli/templates/app/webkit/frontendLogic.ts +12 -0
- package/cli/templates/app/webkit/index.ts +10 -0
- package/cli/templates/client.ts +46 -0
- package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +47 -0
- package/cli/templates/crudPages/[__model__Id]/page.tsx +52 -0
- package/cli/templates/crudPages/new/page.tsx +42 -0
- package/cli/templates/crudPages/page.tsx +43 -0
- package/cli/templates/crudSinglePage/page.tsx +37 -0
- package/cli/templates/env/_env.server.type.ts +16 -0
- package/cli/templates/facetIndex/index.ts +32 -0
- package/cli/templates/index.ts +10 -0
- package/cli/templates/lib/__lib/lib.constant.ts +38 -0
- package/cli/templates/lib/__lib/lib.dictionary.ts +33 -0
- package/cli/templates/lib/__lib/lib.document.ts +35 -0
- package/cli/templates/lib/__lib/lib.service.ts +33 -0
- package/cli/templates/lib/__lib/lib.signal.ts +34 -0
- package/cli/templates/lib/__lib/lib.store.ts +33 -0
- package/cli/templates/lib/cnst.ts +29 -0
- package/cli/templates/lib/db.ts +32 -0
- package/cli/templates/lib/dict.ts +49 -0
- package/cli/templates/lib/sig.ts +60 -0
- package/cli/templates/lib/srv.ts +34 -0
- package/cli/templates/lib/st.ts +31 -0
- package/cli/templates/lib/useClient.ts +19 -0
- package/cli/templates/lib/useServer.ts +7 -0
- package/cli/templates/libRoot/.gitignore.template +16 -0
- package/cli/templates/libRoot/akan.config.ts +12 -0
- package/cli/templates/libRoot/base/baseLogic.ts +10 -0
- package/cli/templates/libRoot/base/index.ts +8 -0
- package/cli/templates/libRoot/common/commonLogic.ts +10 -0
- package/cli/templates/libRoot/common/index.ts +8 -0
- package/cli/templates/libRoot/env/env.server.example.ts.template +6 -0
- package/cli/templates/libRoot/env/env.server.testing.ts.template +6 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +15 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +11 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +13 -0
- package/cli/templates/libRoot/lib/option.ts +17 -0
- package/cli/templates/libRoot/package.json.template +5 -0
- package/cli/templates/libRoot/srvkit/backendLogic.ts +10 -0
- package/cli/templates/libRoot/srvkit/index.ts +8 -0
- package/cli/templates/libRoot/tsconfig.json.template +11 -0
- package/cli/templates/libRoot/ui/index.ts +7 -0
- package/cli/templates/libRoot/webkit/frontendLogic.ts +10 -0
- package/cli/templates/libRoot/webkit/index.ts +8 -0
- package/cli/templates/localDev/docker-compose.yaml.template +37 -0
- package/cli/templates/module/__Model__.Template.tsx +36 -0
- package/cli/templates/module/__Model__.Unit.tsx +26 -0
- package/cli/templates/module/__Model__.Util.tsx +30 -0
- package/cli/templates/module/__Model__.View.tsx +29 -0
- package/cli/templates/module/__Model__.Zone.tsx +43 -0
- package/cli/templates/module/__model__.constant.ts +24 -0
- package/cli/templates/module/__model__.dictionary.ts +30 -0
- package/cli/templates/module/__model__.document.ts +23 -0
- package/cli/templates/module/__model__.service.ts +16 -0
- package/cli/templates/module/__model__.signal.ts +27 -0
- package/cli/templates/module/__model__.store.ts +19 -0
- package/cli/templates/module/index.tsx +44 -0
- package/cli/templates/moduleRoot/index.tsx +31 -0
- package/cli/templates/pkgRoot/tsconfig.json.template +10 -0
- package/cli/templates/server.ts +45 -0
- package/cli/templates/workspaceRoot/.env.template +14 -0
- package/cli/templates/workspaceRoot/.gitignore.template +130 -0
- package/cli/templates/workspaceRoot/.vscode/settings.json.template +23 -0
- package/cli/templates/workspaceRoot/biome.json.template +175 -0
- package/cli/templates/workspaceRoot/bunfig.toml +4 -0
- package/cli/templates/workspaceRoot/infra/app/Chart.yaml.template +6 -0
- package/cli/templates/workspaceRoot/infra/app/templates/frontend.yaml.template +182 -0
- package/cli/templates/workspaceRoot/infra/app/values/_common-values.yaml.template +183 -0
- package/cli/templates/workspaceRoot/package.json.template +7 -0
- package/cli/templates/workspaceRoot/tsconfig.json.template +26 -0
- package/cli/testHelpers.ts +171 -0
- package/cli/workspace/workspace.command.ts +59 -0
- package/cli/workspace/workspace.runner.ts +57 -0
- package/cli/workspace/workspace.script.ts +68 -0
- package/client/capacitor.ts +68 -0
- package/client/clientRuntime.ts +141 -0
- package/client/cookie.ts +121 -0
- package/client/createFont.ts +8 -0
- package/client/csrTypes.ts +259 -0
- package/client/decorators.ts +25 -0
- package/client/device.ts +147 -0
- package/client/fetch.ts +1 -0
- package/client/index.ts +15 -0
- package/client/locale.ts +4 -0
- package/client/makePageProto.tsx +178 -0
- package/client/router.ts +286 -0
- package/client/rscNavigation.ts +19 -0
- package/client/storage.ts +33 -0
- package/client/translator.ts +43 -0
- package/client/types.ts +228 -0
- package/client/useClient.ts +1 -0
- package/common/Logger.ts +177 -0
- package/common/applyMixins.ts +14 -0
- package/common/capitalize.ts +4 -0
- package/common/deepObjectify.ts +27 -0
- package/common/formatNumber.ts +14 -0
- package/common/formatPhone.ts +7 -0
- package/common/getAllPropertyDescriptors.ts +13 -0
- package/common/hmrPhase.ts +17 -0
- package/common/httpClient.ts +101 -0
- package/common/index.ts +50 -0
- package/common/isDayjs.ts +3 -0
- package/common/isEmail.ts +2 -0
- package/common/isPhoneNumber.ts +8 -0
- package/common/isQueryEqual.ts +23 -0
- package/common/isValidDate.ts +14 -0
- package/common/localeConfig.ts +41 -0
- package/common/lowerlize.ts +4 -0
- package/common/mergeVersion.ts +10 -0
- package/common/objectify.ts +7 -0
- package/common/pathGet.ts +13 -0
- package/common/pathSet.ts +16 -0
- package/common/randomPick.ts +1 -0
- package/common/randomPicks.ts +12 -0
- package/common/routeConvention.ts +203 -0
- package/common/sleep.ts +8 -0
- package/common/splitVersion.ts +11 -0
- package/common/subRoute.ts +34 -0
- package/common/types.ts +15 -0
- package/constant/constantRegistry.ts +334 -0
- package/constant/crystalize.ts +45 -0
- package/constant/deserialize.ts +70 -0
- package/constant/fieldInfo.ts +415 -0
- package/constant/getDefault.ts +18 -0
- package/constant/immerify.ts +16 -0
- package/constant/index.ts +10 -0
- package/constant/purify.ts +118 -0
- package/constant/serialize.ts +87 -0
- package/constant/types.ts +105 -0
- package/constant/via.ts +360 -0
- package/devkit/aiEditor.ts +299 -0
- package/devkit/akanApp/akanApp.host.ts +356 -0
- package/devkit/akanApp/index.ts +1 -0
- package/devkit/akanConfig/akanConfig.ts +332 -0
- package/devkit/akanConfig/index.ts +2 -0
- package/devkit/akanConfig/types.ts +187 -0
- package/devkit/applicationBuildReporter.ts +69 -0
- package/devkit/applicationBuildRunner.ts +302 -0
- package/devkit/applicationReleasePackager.ts +205 -0
- package/devkit/artifact/implicitRootLayout.ts +155 -0
- package/devkit/artifact/index.ts +1 -0
- package/devkit/artifact/routeSeedIndex.ts +128 -0
- package/devkit/auth.ts +41 -0
- package/devkit/builder.ts +164 -0
- package/devkit/capacitor.base.config.ts +74 -0
- package/devkit/capacitorApp.ts +385 -0
- package/devkit/commandDecorators/argMeta.ts +88 -0
- package/devkit/commandDecorators/command.ts +314 -0
- package/devkit/commandDecorators/commandBuilder.ts +188 -0
- package/devkit/commandDecorators/commandMeta.ts +6 -0
- package/devkit/commandDecorators/dependencyBuilder.ts +100 -0
- package/devkit/commandDecorators/helpFormatter.ts +217 -0
- package/devkit/commandDecorators/index.ts +8 -0
- package/devkit/commandDecorators/targetMeta.ts +31 -0
- package/devkit/commandDecorators/types.ts +10 -0
- package/devkit/constants.ts +25 -0
- package/devkit/createTunnel.ts +36 -0
- package/devkit/dependencyScanner.ts +339 -0
- package/devkit/executors.ts +1325 -0
- package/devkit/extractDeps.ts +85 -0
- package/devkit/fileEditor.ts +106 -0
- package/devkit/fileSys.ts +39 -0
- package/devkit/frontendBuild/allRoutesBuilder.ts +103 -0
- package/devkit/frontendBuild/clientBuildTypes.ts +114 -0
- package/devkit/frontendBuild/clientEntriesBundler.ts +300 -0
- package/devkit/frontendBuild/clientEntryDiscovery.ts +196 -0
- package/devkit/frontendBuild/csrArtifactBuilder.ts +237 -0
- package/devkit/frontendBuild/cssCompiler.ts +279 -0
- package/devkit/frontendBuild/cssImportResolver.ts +116 -0
- package/devkit/frontendBuild/fontOptimizer.ts +427 -0
- package/devkit/frontendBuild/hmrChangeClassifier.ts +28 -0
- package/devkit/frontendBuild/hmrWatcher.ts +101 -0
- package/devkit/frontendBuild/index.ts +18 -0
- package/devkit/frontendBuild/pagesBundleBuilder.ts +137 -0
- package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +37 -0
- package/devkit/frontendBuild/precompressArtifacts.ts +59 -0
- package/devkit/frontendBuild/routeClientBuilder.ts +290 -0
- package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +62 -0
- package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +139 -0
- package/devkit/frontendBuild/vendorSpecifiers.ts +16 -0
- package/devkit/frontendBuild/watchRootResolver.ts +28 -0
- package/devkit/getCredentials.ts +19 -0
- package/devkit/getDirname.ts +3 -0
- package/devkit/getModelFileData.ts +59 -0
- package/devkit/getRelatedCnsts.ts +300 -0
- package/devkit/guideline.ts +19 -0
- package/devkit/incrementalBuilder/incrementalBuilder.host.ts +78 -0
- package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +330 -0
- package/devkit/incrementalBuilder/index.ts +1 -0
- package/devkit/index.ts +36 -0
- package/devkit/lint/no-import-client-functions.grit +32 -0
- package/devkit/lint/no-import-external-library.grit +21 -0
- package/devkit/lint/no-js-private-class-method.grit +42 -0
- package/devkit/lint/no-use-client-in-server.grit +7 -0
- package/devkit/lint/non-scalar-props-restricted.grit +13 -0
- package/devkit/linter.ts +248 -0
- package/devkit/mobile/index.ts +1 -0
- package/devkit/mobile/mobileTarget.ts +47 -0
- package/devkit/prompter.ts +71 -0
- package/devkit/scanInfo.ts +605 -0
- package/devkit/selectModel.ts +11 -0
- package/devkit/spinner.ts +54 -0
- package/devkit/sshTunnel.ts +151 -0
- package/devkit/streamAi.ts +45 -0
- package/devkit/transforms/barrelAnalyzer.ts +249 -0
- package/devkit/transforms/barrelImportsPlugin.ts +451 -0
- package/devkit/transforms/externalizeFrameworkPlugin.ts +159 -0
- package/devkit/transforms/index.ts +5 -0
- package/devkit/transforms/rscUseClientTransform.ts +52 -0
- package/devkit/transforms/useClientBundlePlugin.ts +47 -0
- package/devkit/typeChecker.ts +260 -0
- package/devkit/types.ts +42 -0
- package/devkit/ui/MultiScrollList.tsx +228 -0
- package/devkit/ui/ScrollList.tsx +106 -0
- package/devkit/ui/index.ts +2 -0
- package/devkit/uploadRelease.ts +95 -0
- package/devkit/useStdoutDimensions.ts +20 -0
- package/dictionary/base.dictionary.ts +91 -0
- package/dictionary/dictInfo.ts +1079 -0
- package/dictionary/dictionary.ts +10 -0
- package/dictionary/index.ts +12 -0
- package/dictionary/locale.ts +230 -0
- package/dictionary/trans.ts +196 -0
- package/document/by.ts +39 -0
- package/document/dataLoader.ts +91 -0
- package/document/database.ts +168 -0
- package/document/databaseRegistry.ts +113 -0
- package/document/documentQuery.ts +143 -0
- package/document/documentSchema.ts +91 -0
- package/document/filterMeta.ts +210 -0
- package/document/index.ts +11 -0
- package/document/into.ts +169 -0
- package/document/loaderInfo.ts +50 -0
- package/document/schema.ts +24 -0
- package/document/types.ts +41 -0
- package/fetch/client/fetchClient.ts +600 -0
- package/fetch/client/httpClient.ts +157 -0
- package/fetch/client/index.ts +3 -0
- package/fetch/client/wsClient.ts +246 -0
- package/fetch/fetchType/appliedReturn.type.ts +108 -0
- package/fetch/fetchType/buildFetch.type.ts +24 -0
- package/fetch/fetchType/clientSignal.type.ts +22 -0
- package/fetch/fetchType/endpointFetch.type.ts +56 -0
- package/fetch/fetchType/index.ts +5 -0
- package/fetch/fetchType/sliceFetch.type.ts +173 -0
- package/fetch/index.ts +4 -0
- package/fetch/requestStorage.ts +127 -0
- package/fetch/serializer/fetch.serializer.ts +131 -0
- package/fetch/serializer/index.ts +1 -0
- package/fetch/types.ts +28 -0
- package/package.json +202 -5
- package/server/SSR_MEMORY_DIAGNOSIS.md +107 -0
- package/server/akanApp.ts +855 -0
- package/server/akanLib.ts +43 -0
- package/server/akanOption.ts +42 -0
- package/server/akanServer.ts +369 -0
- package/server/artifact/builderRpc.ts +124 -0
- package/server/artifact/index.ts +6 -0
- package/server/artifact/ipcTypes.ts +46 -0
- package/server/artifact/manifestTypes.ts +19 -0
- package/server/artifact/routeClientCache.ts +224 -0
- package/server/artifact/routeSeedIndexStore.ts +89 -0
- package/server/artifact/routesManifestStore.ts +120 -0
- package/server/decorators.ts +95 -0
- package/server/di/diLifecycle.ts +520 -0
- package/server/di/index.ts +4 -0
- package/server/di/predefinedAdaptor.ts +77 -0
- package/server/di/resolveAdaptorHierarchy.ts +82 -0
- package/server/di/resolveHierarchy.ts +89 -0
- package/server/di/resolveServiceHierarchy.ts +47 -0
- package/server/di/utils.ts +40 -0
- package/server/hmr/changeBatch.ts +14 -0
- package/server/hmr/clientScript.ts +310 -0
- package/server/hmr/devHmrController.ts +395 -0
- package/server/hmr/index.ts +4 -0
- package/server/hmr/wsHub.ts +56 -0
- package/server/imageOptimizer.ts +427 -0
- package/server/imageOptimizerError.ts +8 -0
- package/server/index.ts +14 -0
- package/server/lifecycle/shutdownManager.ts +52 -0
- package/server/logging/rotatingLogWriter.ts +190 -0
- package/server/processMetricsCollector.ts +78 -0
- package/server/proxy/akanResponse.ts +16 -0
- package/server/proxy/bunRequestFields.ts +12 -0
- package/server/proxy/hostBasePathWebProxy.ts +112 -0
- package/server/proxy/index.ts +15 -0
- package/server/proxy/localeWebProxy.ts +71 -0
- package/server/proxy/types.ts +41 -0
- package/server/proxy/webProxyRunner.ts +90 -0
- package/server/resolver/database.resolver.ts +340 -0
- package/server/resolver/index.ts +3 -0
- package/server/resolver/resolver.contract.fixture.ts +222 -0
- package/server/resolver/service.resolver.ts +176 -0
- package/server/resolver/signal.resolver.ts +386 -0
- package/server/robots.ts +32 -0
- package/server/routeElementComposer.tsx +91 -0
- package/server/routeTreeBuilder.ts +279 -0
- package/server/routing/apiRouter.ts +226 -0
- package/server/rscClient.tsx +140 -0
- package/server/rscWorker.tsx +625 -0
- package/server/rscWorkerHost.ts +616 -0
- package/server/sitemap.ts +90 -0
- package/server/ssrFromRscRenderer.tsx +285 -0
- package/server/ssrTypes.ts +48 -0
- package/server/types/react-server-dom-webpack.d.ts +91 -0
- package/server/types.tsx +109 -0
- package/server/vendor/akanjs-base.ts +1 -0
- package/server/vendor/akanjs-common.ts +1 -0
- package/server/vendor/akanjs-constant.ts +1 -0
- package/server/vendor/akanjs-store.ts +1 -0
- package/server/vendor/react-dom-client.ts +5 -0
- package/server/vendor/react-dom.ts +21 -0
- package/server/vendor/react-jsx-dev-runtime.ts +5 -0
- package/server/vendor/react-jsx-runtime.ts +5 -0
- package/server/vendor/react-refresh-runtime.ts +6 -0
- package/server/vendor/react-server-dom-webpack-client-browser.ts +12 -0
- package/server/vendor/react.ts +51 -0
- package/server/vendor/scheduler.ts +23 -0
- package/server/webRouter.ts +712 -0
- package/service/adapt.ts +47 -0
- package/service/base.service.ts +18 -0
- package/service/index.ts +10 -0
- package/service/injectInfo.ts +393 -0
- package/service/ipcTypes.ts +127 -0
- package/service/predefinedAdaptor/cache.adaptor.ts +105 -0
- package/service/predefinedAdaptor/compress.adaptor.ts +357 -0
- package/service/predefinedAdaptor/database.adaptor.ts +1310 -0
- package/service/predefinedAdaptor/index.ts +13 -0
- package/service/predefinedAdaptor/logging.adaptor.ts +36 -0
- package/service/predefinedAdaptor/queue.adaptor.ts +42 -0
- package/service/predefinedAdaptor/role.adaptor.ts +18 -0
- package/service/predefinedAdaptor/schedule.adaptor.ts +188 -0
- package/service/predefinedAdaptor/solidCache.adaptor.ts +143 -0
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +98 -0
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +203 -0
- package/service/predefinedAdaptor/solidSqlite.ts +85 -0
- package/service/predefinedAdaptor/sqlitePath.ts +20 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +121 -0
- package/service/predefinedAdaptor/websocket.adaptor.ts +313 -0
- package/service/serve.ts +223 -0
- package/service/serviceModule.ts +221 -0
- package/service/serviceRegistry.ts +26 -0
- package/service/types.ts +113 -0
- package/signal/base.signal.ts +46 -0
- package/signal/endpoint.ts +122 -0
- package/signal/endpointInfo.ts +374 -0
- package/signal/exception.ts +50 -0
- package/signal/guard.ts +18 -0
- package/signal/guards.ts +16 -0
- package/signal/index.ts +18 -0
- package/signal/intercept.ts +39 -0
- package/signal/internal.ts +56 -0
- package/signal/internalArg.ts +38 -0
- package/signal/internalInfo.ts +208 -0
- package/signal/middleware.ts +108 -0
- package/signal/serializer/fetch.serializer.ts +128 -0
- package/signal/serializer/index.ts +1 -0
- package/signal/serverSignal.ts +114 -0
- package/signal/signalContext.ts +446 -0
- package/signal/signalRegistry.ts +82 -0
- package/signal/slice.ts +158 -0
- package/signal/sliceInfo.ts +254 -0
- package/signal/types.ts +131 -0
- package/store/action.ts +1067 -0
- package/store/baseSt.ts +81 -0
- package/store/hooks.ts +2 -0
- package/store/index.ts +8 -0
- package/store/rootStore.ts +26 -0
- package/store/state.ts +226 -0
- package/store/stateBuilder.ts +429 -0
- package/store/stateInfo.ts +66 -0
- package/store/store.ts +194 -0
- package/store/storeInstance.ts +382 -0
- package/store/storeRegistry.ts +84 -0
- package/store/types.ts +69 -0
- package/store/withSelector.ts +62 -0
- package/test/index.ts +16 -0
- package/test/playwright.config.base.ts +48 -0
- package/test/playwright.pageAgent.ts +41 -0
- package/test/sample.ts +19 -0
- package/test/sampleOf.ts +70 -0
- package/test/signalTest.preload.ts +10 -0
- package/test/signalTestRuntime.ts +126 -0
- package/test/testServer.ts +187 -0
- package/ui/BottomSheet.tsx +103 -0
- package/ui/Button.tsx +70 -0
- package/ui/ClientSide.tsx +11 -0
- package/ui/Clipboard.tsx +49 -0
- package/ui/Constant/Doc.tsx +696 -0
- package/ui/Constant/Mermaid.tsx +149 -0
- package/ui/Constant/index.ts +6 -0
- package/ui/Constant/schemaDoc.ts +324 -0
- package/ui/Copy.tsx +27 -0
- package/ui/CsrImage.tsx +38 -0
- package/ui/Data/CardList.tsx +141 -0
- package/ui/Data/Dashboard.tsx +72 -0
- package/ui/Data/Insight.tsx +35 -0
- package/ui/Data/Item.tsx +285 -0
- package/ui/Data/ListContainer.tsx +320 -0
- package/ui/Data/Pagination.tsx +54 -0
- package/ui/Data/QueryMaker.tsx +21 -0
- package/ui/Data/TableList.tsx +161 -0
- package/ui/Data/index.ts +11 -0
- package/ui/Data/index_.tsx +11 -0
- package/ui/DatePicker.tsx +184 -0
- package/ui/Dialog/Action.tsx +15 -0
- package/ui/Dialog/Close.tsx +22 -0
- package/ui/Dialog/Content.tsx +11 -0
- package/ui/Dialog/Modal.tsx +137 -0
- package/ui/Dialog/Provider.tsx +33 -0
- package/ui/Dialog/Title.tsx +15 -0
- package/ui/Dialog/Trigger.tsx +22 -0
- package/ui/Dialog/context.ts +20 -0
- package/ui/Dialog/index.tsx +15 -0
- package/ui/DragAction.tsx +129 -0
- package/ui/DraggableList.tsx +230 -0
- package/ui/Dropdown.tsx +51 -0
- package/ui/Empty.tsx +32 -0
- package/ui/Field.tsx +1556 -0
- package/ui/FontFace.tsx +26 -0
- package/ui/Image.tsx +185 -0
- package/ui/InfiniteScroll.tsx +67 -0
- package/ui/Input.tsx +636 -0
- package/ui/KeyboardAvoiding.tsx +62 -0
- package/ui/Layout/BottomAction.tsx +15 -0
- package/ui/Layout/BottomInset.tsx +42 -0
- package/ui/Layout/BottomTab.tsx +71 -0
- package/ui/Layout/Header.tsx +38 -0
- package/ui/Layout/LeftSider.tsx +34 -0
- package/ui/Layout/Navbar.tsx +46 -0
- package/ui/Layout/RightSider.tsx +41 -0
- package/ui/Layout/Sider.tsx +69 -0
- package/ui/Layout/Template.tsx +11 -0
- package/ui/Layout/TopLeftAction.tsx +28 -0
- package/ui/Layout/Unit.tsx +19 -0
- package/ui/Layout/View.tsx +12 -0
- package/ui/Layout/Zone.tsx +10 -0
- package/ui/Layout/index.ts +27 -0
- package/ui/Link/Back.tsx +15 -0
- package/ui/Link/Close.tsx +20 -0
- package/ui/Link/CsrLink.tsx +41 -0
- package/ui/Link/Lang.tsx +16 -0
- package/ui/Link/SsrLink.tsx +68 -0
- package/ui/Link/index.tsx +32 -0
- package/ui/Link/types.ts +47 -0
- package/ui/Load/Edit.tsx +19 -0
- package/ui/Load/Edit_Client.tsx +120 -0
- package/ui/Load/Page.tsx +40 -0
- package/ui/Load/PageCSR.tsx +39 -0
- package/ui/Load/Pagination.tsx +89 -0
- package/ui/Load/Units.tsx +330 -0
- package/ui/Load/View.tsx +115 -0
- package/ui/Load/index.ts +11 -0
- package/ui/Load/index_.tsx +6 -0
- package/ui/Loading/Area.tsx +10 -0
- package/ui/Loading/Button.tsx +17 -0
- package/ui/Loading/Input.tsx +17 -0
- package/ui/Loading/ProgressBar.tsx +14 -0
- package/ui/Loading/Skeleton.tsx +22 -0
- package/ui/Loading/Spin.tsx +22 -0
- package/ui/Loading/index.tsx +8 -0
- package/ui/Menu.tsx +273 -0
- package/ui/Modal.tsx +87 -0
- package/ui/Model/AdminPanel.tsx +51 -0
- package/ui/Model/Edit.tsx +46 -0
- package/ui/Model/EditModal.tsx +301 -0
- package/ui/Model/EditWrapper.tsx +48 -0
- package/ui/Model/LoadInit.tsx +11 -0
- package/ui/Model/New.tsx +46 -0
- package/ui/Model/NewWrapper.tsx +20 -0
- package/ui/Model/NewWrapper_Client.tsx +57 -0
- package/ui/Model/Remove.tsx +75 -0
- package/ui/Model/RemoveWrapper.tsx +38 -0
- package/ui/Model/SureToRemove.tsx +108 -0
- package/ui/Model/View.tsx +65 -0
- package/ui/Model/ViewEditModal.tsx +125 -0
- package/ui/Model/ViewModal.tsx +71 -0
- package/ui/Model/ViewWrapper.tsx +38 -0
- package/ui/Model/index.ts +33 -0
- package/ui/Model/index_.tsx +16 -0
- package/ui/More.tsx +56 -0
- package/ui/ObjectId.tsx +29 -0
- package/ui/Pagination.tsx +120 -0
- package/ui/Popconfirm.tsx +135 -0
- package/ui/Portal.tsx +10 -0
- package/ui/Radio.tsx +53 -0
- package/ui/RecentTime.tsx +123 -0
- package/ui/Refresh.tsx +24 -0
- package/ui/ScreenNavigator.tsx +129 -0
- package/ui/Select.tsx +322 -0
- package/ui/Signal/Arg.tsx +352 -0
- package/ui/Signal/Doc.tsx +231 -0
- package/ui/Signal/Listener.tsx +74 -0
- package/ui/Signal/Message.tsx +267 -0
- package/ui/Signal/Object.tsx +131 -0
- package/ui/Signal/PubSub.tsx +247 -0
- package/ui/Signal/Request.tsx +30 -0
- package/ui/Signal/Response.tsx +76 -0
- package/ui/Signal/RestApi.tsx +390 -0
- package/ui/Signal/WebSocket.tsx +47 -0
- package/ui/Signal/index.ts +10 -0
- package/ui/Signal/makeExample.ts +75 -0
- package/ui/System/CSR.tsx +420 -0
- package/ui/System/Client.tsx +296 -0
- package/ui/System/Common.tsx +83 -0
- package/ui/System/DevModeToggle.tsx +21 -0
- package/ui/System/Gtag.tsx +69 -0
- package/ui/System/Messages.tsx +175 -0
- package/ui/System/Reconnect.tsx +156 -0
- package/ui/System/Root.tsx +10 -0
- package/ui/System/SSR.tsx +163 -0
- package/ui/System/SelectLanguage.tsx +47 -0
- package/ui/System/ThemeToggle.tsx +98 -0
- package/ui/System/index.tsx +23 -0
- package/ui/Tab/Menu.tsx +56 -0
- package/ui/Tab/Menus.tsx +10 -0
- package/ui/Tab/Panel.tsx +25 -0
- package/ui/Tab/Provider.tsx +25 -0
- package/ui/Tab/context.ts +16 -0
- package/ui/Tab/index.tsx +11 -0
- package/ui/Table.tsx +131 -0
- package/ui/ToggleSelect.tsx +144 -0
- package/ui/Unauthorized.tsx +29 -0
- package/ui/animated.tsx +8 -0
- package/ui/fontCss.ts +86 -0
- package/ui/index.ts +44 -0
- package/ui/styles.css +617 -0
- package/webkit/bootCsr.tsx +275 -0
- package/webkit/createRobotPage.ts +15 -0
- package/webkit/createSitemapPage.ts +4 -0
- package/webkit/index.ts +19 -0
- package/webkit/lazy.tsx +37 -0
- package/webkit/types.ts +7 -0
- package/webkit/useCamera.tsx +99 -0
- package/webkit/useCodepush.tsx +99 -0
- package/webkit/useContact.tsx +48 -0
- package/webkit/useCsrValues.ts +661 -0
- package/webkit/useDebounce.ts +24 -0
- package/webkit/useFetch.ts +48 -0
- package/webkit/useGeoLocation.tsx +24 -0
- package/webkit/useHistory.ts +76 -0
- package/webkit/useInterval.ts +21 -0
- package/webkit/useLocation.ts +69 -0
- package/webkit/usePurchase.tsx +156 -0
- package/webkit/usePushNoti.tsx +48 -0
- package/webkit/useThrottle.ts +22 -0
- package/src/index.js +0 -2
- package/src/index.js.map +0 -1
- package/src/lib/akan2.js +0 -4
- package/src/lib/akan2.js.map +0 -1
- package/src/run.js +0 -4
- package/src/run.js.map +0 -1
package/base/symbols.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const FIELD_META = Symbol.for("akanjs.field");
|
|
2
|
+
export const SLICE_META = Symbol.for("akanjs.slice");
|
|
3
|
+
export const FILTER_META = Symbol.for("akanjs.filter");
|
|
4
|
+
export const LOADER_META = Symbol.for("akanjs.loader");
|
|
5
|
+
export const INJECT_META = Symbol.for("akanjs.inject");
|
|
6
|
+
export const ENDPOINT_META = Symbol.for("akanjs.endpoint");
|
|
7
|
+
export const INTERNAL_META = Symbol.for("akanjs.internal");
|
|
8
|
+
export const STATE_META = Symbol.for("akanjs.state");
|
|
9
|
+
export const STATE_INIT_META = Symbol.for("akanjs.state.init");
|
|
10
|
+
export const STATE_DERIVED_META = Symbol.for("akanjs.state.derived");
|
|
11
|
+
export const ACTION_META = Symbol.for("akanjs.action");
|
package/base/types.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { Dayjs } from "dayjs";
|
|
2
|
+
|
|
3
|
+
export type SshOptions = { host: string; port: number; username: string; password: string; dstPort?: number };
|
|
4
|
+
|
|
5
|
+
export type Cls<T = unknown, Statics = unknown> = (new (...args: never[]) => T) & Statics;
|
|
6
|
+
|
|
7
|
+
export type BufferLike =
|
|
8
|
+
| string
|
|
9
|
+
| Buffer
|
|
10
|
+
| DataView
|
|
11
|
+
| number
|
|
12
|
+
| ArrayBufferView
|
|
13
|
+
| Uint8Array
|
|
14
|
+
| ArrayBuffer
|
|
15
|
+
| SharedArrayBuffer
|
|
16
|
+
| readonly unknown[]
|
|
17
|
+
| readonly number[];
|
|
18
|
+
|
|
19
|
+
export type GetObject<T> = {
|
|
20
|
+
[K in keyof T as K extends "prototype" ? never : K]: T[K];
|
|
21
|
+
};
|
|
22
|
+
export type OptionOf<Obj> = Partial<{
|
|
23
|
+
[K in keyof Obj]: Obj[K] | null;
|
|
24
|
+
}>;
|
|
25
|
+
export type UnCls<T> = T extends new (...args: infer _Args) => infer U ? U : never;
|
|
26
|
+
|
|
27
|
+
export type Prettify<T> = {
|
|
28
|
+
[K in keyof T]: T[K];
|
|
29
|
+
} & {};
|
|
30
|
+
|
|
31
|
+
export type GetStateObject<T> = {
|
|
32
|
+
[K in keyof T as T[K] extends (...args: never[]) => unknown ? never : K extends "prototype" ? never : K]: T[K];
|
|
33
|
+
};
|
|
34
|
+
export type GetActionObject<T> = {
|
|
35
|
+
[K in keyof T as T[K] extends (...args: never[]) => unknown ? (K extends "prototype" ? never : K) : never]: T[K];
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export type PromiseOrObject<T> = T | Promise<T>;
|
|
39
|
+
type MergeObjectValues<T> = T extends Record<string, infer V> ? (V extends object ? V : never) : never;
|
|
40
|
+
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
41
|
+
export type MergedValues<T> = UnionToIntersection<MergeObjectValues<T>>;
|
|
42
|
+
export type Assign<A, B> = Omit<A, keyof B> & B;
|
|
43
|
+
|
|
44
|
+
export type ObjectAssign<Objects extends object[], Acc = unknown> = Objects extends [
|
|
45
|
+
infer First extends object,
|
|
46
|
+
...infer Rest extends object[],
|
|
47
|
+
]
|
|
48
|
+
? ObjectAssign<Rest, Assign<Acc, First>>
|
|
49
|
+
: Acc;
|
|
50
|
+
|
|
51
|
+
export type MergeAll<T extends object[], Acc = unknown> = T extends [
|
|
52
|
+
infer First extends object,
|
|
53
|
+
...infer Rest extends object[],
|
|
54
|
+
]
|
|
55
|
+
? MergeAll<Rest, Acc & First>
|
|
56
|
+
: Acc;
|
|
57
|
+
|
|
58
|
+
export type MergeAllActionTypes<T extends Cls[], OmitKey extends string = never, Acc = unknown> = T extends [
|
|
59
|
+
infer First extends Cls,
|
|
60
|
+
...infer Rest extends Cls[],
|
|
61
|
+
]
|
|
62
|
+
? Rest extends []
|
|
63
|
+
? Acc & Omit<GetActionObject<UnCls<First>>, OmitKey>
|
|
64
|
+
: MergeAllActionTypes<Rest, OmitKey, Acc & Omit<UnCls<First>, OmitKey>>
|
|
65
|
+
: Acc;
|
|
66
|
+
|
|
67
|
+
export type MergeAllTypes<T extends Cls[], OmitKey extends string = never, Acc = unknown> = T extends [
|
|
68
|
+
infer First extends Cls,
|
|
69
|
+
...infer Rest extends Cls[],
|
|
70
|
+
]
|
|
71
|
+
? MergeAllTypes<Rest, OmitKey, Acc & Omit<UnCls<First>, OmitKey>>
|
|
72
|
+
: Acc;
|
|
73
|
+
|
|
74
|
+
export type MergeAllKeyOfTypes<T extends Cls<object>[], Key extends PropertyKey, Acc = unknown> = T extends [
|
|
75
|
+
infer First extends Cls<object>,
|
|
76
|
+
...infer Rest extends Cls<object>[],
|
|
77
|
+
]
|
|
78
|
+
? Key extends keyof UnCls<First>
|
|
79
|
+
? MergeAllKeyOfTypes<Rest, Key, Acc & UnCls<First>[Key]>
|
|
80
|
+
: MergeAllKeyOfTypes<Rest, Key, Acc>
|
|
81
|
+
: Acc;
|
|
82
|
+
|
|
83
|
+
export type MergeAllKeyOfObjects<T extends object[], Key extends PropertyKey, Acc = unknown> = T extends [
|
|
84
|
+
infer First extends object,
|
|
85
|
+
...infer Rest extends object[],
|
|
86
|
+
]
|
|
87
|
+
? Key extends keyof First
|
|
88
|
+
? MergeAllKeyOfObjects<Rest, Key, Acc & First[Key]>
|
|
89
|
+
: MergeAllKeyOfObjects<Rest, Key, Acc>
|
|
90
|
+
: Acc;
|
|
91
|
+
|
|
92
|
+
export type MergeAllDoubleKeyOfObjects<
|
|
93
|
+
T extends object[],
|
|
94
|
+
Key extends PropertyKey,
|
|
95
|
+
SubKey extends PropertyKey,
|
|
96
|
+
Acc = unknown,
|
|
97
|
+
> = T extends [infer First extends object, ...infer Rest extends object[]]
|
|
98
|
+
? Key extends keyof First
|
|
99
|
+
? First[Key] extends object
|
|
100
|
+
? SubKey extends keyof First[Key]
|
|
101
|
+
? MergeAllDoubleKeyOfObjects<Rest, Key, SubKey, Acc & First[Key][SubKey]>
|
|
102
|
+
: MergeAllDoubleKeyOfObjects<Rest, Key, SubKey, Acc>
|
|
103
|
+
: MergeAllDoubleKeyOfObjects<Rest, Key, SubKey, Acc>
|
|
104
|
+
: MergeAllDoubleKeyOfObjects<Rest, Key, SubKey, Acc>
|
|
105
|
+
: Acc;
|
|
106
|
+
|
|
107
|
+
export type Primitive = string | number | boolean | null | undefined;
|
|
108
|
+
|
|
109
|
+
export type NestedKeysWithAllowed<T, Allowed = Primitive> = T extends Primitive
|
|
110
|
+
? never
|
|
111
|
+
: T extends unknown[]
|
|
112
|
+
? never
|
|
113
|
+
: T extends (...args: never[]) => unknown
|
|
114
|
+
? never
|
|
115
|
+
: {
|
|
116
|
+
[K in keyof T & string]: T[K] extends Allowed
|
|
117
|
+
? K
|
|
118
|
+
: T[K] extends Dayjs
|
|
119
|
+
? never
|
|
120
|
+
: T[K] extends readonly unknown[]
|
|
121
|
+
? never
|
|
122
|
+
: T[K] extends (...args: never[]) => unknown
|
|
123
|
+
? never
|
|
124
|
+
: T[K] extends object
|
|
125
|
+
? K | `${K}.${NestedKeysWithAllowed<T[K], Allowed>}`
|
|
126
|
+
: never;
|
|
127
|
+
}[keyof T & string];
|
|
128
|
+
|
|
129
|
+
export type SingleValue<Value> = Value extends (infer V)[] ? SingleValue<V> : Value;
|
|
130
|
+
|
|
131
|
+
export type StrArrToObject<Arr, Value> = Arr extends [infer First, ...infer Rest]
|
|
132
|
+
? { [K in First & string]: Value } & StrArrToObject<Rest, Value>
|
|
133
|
+
: unknown;
|
|
134
|
+
|
|
135
|
+
export type GetValueOfKey<Model, Key extends string, Fallback = never> = Model extends { [key in Key]: unknown }
|
|
136
|
+
? Model[Key]
|
|
137
|
+
: Fallback;
|
package/base/utils.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const getNonArrayModel = <T>(arraiedModel: T | T[]): [T, number] => {
|
|
2
|
+
let arrDepth = 0;
|
|
3
|
+
let target: T | T[] = arraiedModel;
|
|
4
|
+
while (Array.isArray(target)) {
|
|
5
|
+
target = target[0] as T;
|
|
6
|
+
arrDepth++;
|
|
7
|
+
}
|
|
8
|
+
return [target, arrDepth];
|
|
9
|
+
};
|
|
10
|
+
export const arraiedModel = <T = unknown>(modelRef: T, arrDepth = 0) => {
|
|
11
|
+
let target: T | T[] | T[][] | T[][][] = modelRef;
|
|
12
|
+
for (let i = 0; i < arrDepth; i++) target = [target as T];
|
|
13
|
+
return target;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type ApplyFnToArrayObjectsResult<Input, Output> = Input extends readonly (infer Item)[]
|
|
17
|
+
? ApplyFnToArrayObjectsResult<Item, Output>[]
|
|
18
|
+
: Output;
|
|
19
|
+
|
|
20
|
+
export const applyFnToArrayObjects = <Input, Fn extends (arg: never) => unknown>(
|
|
21
|
+
arraiedData: Input,
|
|
22
|
+
fn: Fn,
|
|
23
|
+
): ApplyFnToArrayObjectsResult<Input, ReturnType<Fn>> => {
|
|
24
|
+
if (Array.isArray(arraiedData))
|
|
25
|
+
return arraiedData.map((data) => applyFnToArrayObjects(data, fn)) as ApplyFnToArrayObjectsResult<
|
|
26
|
+
Input,
|
|
27
|
+
ReturnType<Fn>
|
|
28
|
+
>;
|
|
29
|
+
return fn(arraiedData as never) as ApplyFnToArrayObjectsResult<Input, ReturnType<Fn>>;
|
|
30
|
+
};
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { select } from "@inquirer/prompts";
|
|
2
|
+
import { App, command, Exec, Sys, Workspace } from "akanjs/devkit";
|
|
3
|
+
|
|
4
|
+
import { ApplicationScript } from "./application.script";
|
|
5
|
+
|
|
6
|
+
const asMobileEnv = (env: string) => env as "local" | "debug" | "develop" | "main";
|
|
7
|
+
|
|
8
|
+
export class ApplicationCommand extends command("application", [ApplicationScript], ({ public: target }) => ({
|
|
9
|
+
createApplication: target({ desc: "Create a new application in the workspace" })
|
|
10
|
+
.arg("appName", String, { desc: "name of application" })
|
|
11
|
+
.option("start", Boolean, { desc: "start application", default: false })
|
|
12
|
+
.with(Workspace)
|
|
13
|
+
.exec(async function (appName, start, workspace) {
|
|
14
|
+
await this.applicationScript.createApplication(appName.toLowerCase().replace(/ /g, "-"), workspace, { start });
|
|
15
|
+
}),
|
|
16
|
+
removeApplication: target({ desc: "Remove an application from the workspace" })
|
|
17
|
+
.with(App)
|
|
18
|
+
.exec(async function (app) {
|
|
19
|
+
await this.applicationScript.removeApplication(app);
|
|
20
|
+
}),
|
|
21
|
+
sync: target({ desc: "Sync dependencies and configuration for an app or library" })
|
|
22
|
+
.with(Sys)
|
|
23
|
+
.exec(async function (sys) {
|
|
24
|
+
await this.applicationScript.sync(sys);
|
|
25
|
+
}),
|
|
26
|
+
script: target({ desc: "Run a custom script in the application" })
|
|
27
|
+
.with(App)
|
|
28
|
+
.arg("filename", String, { desc: "name of script", nullable: true })
|
|
29
|
+
.exec(async function (app, filename) {
|
|
30
|
+
await this.applicationScript.script(app, filename);
|
|
31
|
+
}),
|
|
32
|
+
build: target({ short: true, desc: "Build the application for production (frontend + backend)" })
|
|
33
|
+
.with(App)
|
|
34
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
35
|
+
.option("fast", Boolean, { desc: "fast build", default: false })
|
|
36
|
+
.option("quiet", Boolean, { desc: "hide build progress output", default: false })
|
|
37
|
+
.exec(async function (app, write, fast, quiet) {
|
|
38
|
+
await this.applicationScript.build(app, { write, fast, quiet });
|
|
39
|
+
}),
|
|
40
|
+
typecheck: target({ short: true, desc: "Typecheck the application" })
|
|
41
|
+
.with(App)
|
|
42
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
43
|
+
.option("clean", Boolean, { desc: "clear typecheck cache before running", default: false })
|
|
44
|
+
.option("incremental", Boolean, { desc: "reuse TypeScript incremental cache", default: true })
|
|
45
|
+
.exec(async function (app, write, clean, incremental) {
|
|
46
|
+
await this.applicationScript.typecheck(app, { write, clean, incremental });
|
|
47
|
+
}),
|
|
48
|
+
test: target({ desc: "Prepare and test an app, library, or package" })
|
|
49
|
+
.with(Exec)
|
|
50
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
51
|
+
.exec(async function (exec, write) {
|
|
52
|
+
await this.applicationScript.test(exec, { write });
|
|
53
|
+
}),
|
|
54
|
+
buildIos: target({ short: true, desc: "Build iOS app with Capacitor" })
|
|
55
|
+
.with(App)
|
|
56
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
57
|
+
.option("env", String, {
|
|
58
|
+
enum: ["local", "debug", "develop", "main"],
|
|
59
|
+
desc: "backend environment",
|
|
60
|
+
default: "debug",
|
|
61
|
+
})
|
|
62
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
63
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
64
|
+
.exec(async function (app, target, env, write, regenerate) {
|
|
65
|
+
await this.applicationScript.buildIos(app, { target, env: asMobileEnv(env), write, regenerate });
|
|
66
|
+
}),
|
|
67
|
+
buildAndroid: target({ short: true, desc: "Build Android app with Capacitor" })
|
|
68
|
+
.with(App)
|
|
69
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
70
|
+
.option("env", String, {
|
|
71
|
+
enum: ["local", "debug", "develop", "main"],
|
|
72
|
+
desc: "backend environment",
|
|
73
|
+
default: "debug",
|
|
74
|
+
})
|
|
75
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
76
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
77
|
+
.exec(async function (app, target, env, write, regenerate) {
|
|
78
|
+
await this.applicationScript.buildAndroid(app, { target, env: asMobileEnv(env), write, regenerate });
|
|
79
|
+
}),
|
|
80
|
+
start: target({ short: true, desc: "Start development server (frontend SSR + backend)" })
|
|
81
|
+
.with(App)
|
|
82
|
+
.option("open", Boolean, { desc: "open web browser?", default: false })
|
|
83
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
84
|
+
.exec(async function (app, open, write) {
|
|
85
|
+
await this.applicationScript.start(app, { open, write });
|
|
86
|
+
}),
|
|
87
|
+
startIos: target({ short: true, desc: "Start iOS app in simulator or device" })
|
|
88
|
+
.with(App)
|
|
89
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
90
|
+
.option("env", String, {
|
|
91
|
+
enum: ["local", "debug", "develop", "main"],
|
|
92
|
+
desc: "backend environment",
|
|
93
|
+
default: "local",
|
|
94
|
+
})
|
|
95
|
+
.option("open", Boolean, { desc: "open ios simulator", default: false })
|
|
96
|
+
.option("release", Boolean, { desc: "release mode", default: false })
|
|
97
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
98
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
99
|
+
.exec(async function (app, target, env, open, release, write, regenerate) {
|
|
100
|
+
await this.applicationScript.startIos(app, {
|
|
101
|
+
target,
|
|
102
|
+
env: asMobileEnv(env),
|
|
103
|
+
open,
|
|
104
|
+
operation: release ? "release" : "local",
|
|
105
|
+
write,
|
|
106
|
+
regenerate,
|
|
107
|
+
});
|
|
108
|
+
}),
|
|
109
|
+
startAndroid: target({ short: true, desc: "Start Android app in emulator or device" })
|
|
110
|
+
.with(App)
|
|
111
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
112
|
+
.option("env", String, {
|
|
113
|
+
enum: ["local", "debug", "develop", "main"],
|
|
114
|
+
desc: "backend environment",
|
|
115
|
+
default: "local",
|
|
116
|
+
})
|
|
117
|
+
.option("release", Boolean, { desc: "release mode", default: false })
|
|
118
|
+
.option("open", Boolean, { desc: "open android simulator", default: false })
|
|
119
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
120
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
121
|
+
.exec(async function (app, target, env, release, open, write, regenerate) {
|
|
122
|
+
await this.applicationScript.startAndroid(app, {
|
|
123
|
+
target,
|
|
124
|
+
env: asMobileEnv(env),
|
|
125
|
+
open,
|
|
126
|
+
operation: release ? "release" : "local",
|
|
127
|
+
write,
|
|
128
|
+
regenerate,
|
|
129
|
+
});
|
|
130
|
+
}),
|
|
131
|
+
releaseIos: target({ desc: "Build and package iOS app for release (App Store)" })
|
|
132
|
+
.with(App)
|
|
133
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
134
|
+
.option("env", String, {
|
|
135
|
+
enum: ["debug", "develop", "main", "local"],
|
|
136
|
+
desc: "backend environment",
|
|
137
|
+
default: "main",
|
|
138
|
+
})
|
|
139
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
140
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
141
|
+
.option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false })
|
|
142
|
+
.exec(async function (app, target, env, write, regenerate, allowLocalRelease) {
|
|
143
|
+
await this.applicationScript.releaseIos(app, {
|
|
144
|
+
target,
|
|
145
|
+
env: asMobileEnv(env),
|
|
146
|
+
write,
|
|
147
|
+
regenerate,
|
|
148
|
+
allowLocalRelease,
|
|
149
|
+
});
|
|
150
|
+
}),
|
|
151
|
+
releaseAndroid: target({ desc: "Build and package Android app for release (Play Store)" })
|
|
152
|
+
.with(App)
|
|
153
|
+
.option("assembleType", String, { enum: ["apk", "aab"], default: "apk" })
|
|
154
|
+
.option("target", String, { desc: "mobile target name or all" })
|
|
155
|
+
.option("env", String, {
|
|
156
|
+
enum: ["debug", "develop", "main", "local"],
|
|
157
|
+
desc: "backend environment",
|
|
158
|
+
default: "main",
|
|
159
|
+
})
|
|
160
|
+
.option("write", Boolean, { desc: "write code generation", default: true })
|
|
161
|
+
.option("regenerate", Boolean, { flag: "g", desc: "delete and regenerate native project", default: false })
|
|
162
|
+
.option("allowLocalRelease", Boolean, { flag: "l", desc: "allow release with --env local", default: false })
|
|
163
|
+
.exec(async function (app, assembleType, target, env, write, regenerate, allowLocalRelease) {
|
|
164
|
+
await this.applicationScript.releaseAndroid(app, assembleType as "apk" | "aab", {
|
|
165
|
+
target,
|
|
166
|
+
env: asMobileEnv(env),
|
|
167
|
+
write,
|
|
168
|
+
regenerate,
|
|
169
|
+
allowLocalRelease,
|
|
170
|
+
});
|
|
171
|
+
}),
|
|
172
|
+
releaseSource: target({ desc: "Release app source code with OTA update support" })
|
|
173
|
+
.with(App)
|
|
174
|
+
.option("rebuild", Boolean, { desc: "rebuild", default: false })
|
|
175
|
+
.option("buildNum", Number, { desc: "build number", default: 0 })
|
|
176
|
+
.option("environment", String, { desc: "environment", default: "debug" })
|
|
177
|
+
.option("local", Boolean, { desc: "local", default: true })
|
|
178
|
+
.exec(async function (app, rebuild, buildNum, environment, local) {
|
|
179
|
+
await this.applicationScript.releaseSource(app, { rebuild, buildNum, environment, local });
|
|
180
|
+
}),
|
|
181
|
+
codepush: target({ desc: "Deploy over-the-air (OTA) update for mobile app" })
|
|
182
|
+
.with(App)
|
|
183
|
+
.exec(async function (app) {
|
|
184
|
+
const os: "ios" | "android" = await select({
|
|
185
|
+
message: "Select os",
|
|
186
|
+
choices: [
|
|
187
|
+
{ value: "ios", name: "ios", description: "ios" },
|
|
188
|
+
{ value: "android", name: "android", description: "android" },
|
|
189
|
+
],
|
|
190
|
+
});
|
|
191
|
+
await this.applicationScript.codepush(app, os);
|
|
192
|
+
}),
|
|
193
|
+
dbup: target({ desc: "Start local database services for a database mode" })
|
|
194
|
+
.with(Workspace)
|
|
195
|
+
.option("mode", String, {
|
|
196
|
+
desc: "database mode",
|
|
197
|
+
default: "multiple",
|
|
198
|
+
enum: ["single", "multiple", "cluster"],
|
|
199
|
+
})
|
|
200
|
+
.exec(async function (workspace, mode) {
|
|
201
|
+
await this.applicationScript.dbup(workspace, mode as "single" | "multiple" | "cluster");
|
|
202
|
+
}),
|
|
203
|
+
dbdown: target({ desc: "Stop local database services" })
|
|
204
|
+
.with(Workspace)
|
|
205
|
+
.exec(async function (workspace) {
|
|
206
|
+
await this.applicationScript.dbdown(workspace);
|
|
207
|
+
}),
|
|
208
|
+
configureApp: target({ desc: "Configure application settings interactively" })
|
|
209
|
+
.with(App)
|
|
210
|
+
.exec(async function (app) {
|
|
211
|
+
await this.applicationScript.configureApp(app);
|
|
212
|
+
}),
|
|
213
|
+
})) {}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import type { ChildProcess } from "node:child_process";
|
|
3
|
+
import type EventEmitter from "node:events";
|
|
4
|
+
import { type App as AppType, MultiScrollList, useStdoutDimensions } from "akanjs/devkit";
|
|
5
|
+
import { Box, render, Text, useApp } from "ink";
|
|
6
|
+
import type React from "react";
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
|
|
9
|
+
interface BackendProps {
|
|
10
|
+
appName: string;
|
|
11
|
+
childProcess: ChildProcess;
|
|
12
|
+
onExit: () => void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const Backend = ({ appName, childProcess, onExit }: BackendProps) => {
|
|
16
|
+
const [width, height] = useStdoutDimensions();
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
|
|
19
|
+
return () => {
|
|
20
|
+
childProcess.kill();
|
|
21
|
+
onExit();
|
|
22
|
+
};
|
|
23
|
+
}, [childProcess, onExit]);
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<Box width={width} height={height}>
|
|
27
|
+
<Text bold>Akan.JS Backend</Text>
|
|
28
|
+
</Box>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
interface FrontendProps {
|
|
33
|
+
appName: string;
|
|
34
|
+
childProcess: ChildProcess;
|
|
35
|
+
onExit: () => void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const Frontend = ({ appName, childProcess, onExit }: FrontendProps) => {
|
|
39
|
+
const [logs, setLogs] = useState<string[]>([]);
|
|
40
|
+
const [width, height] = useStdoutDimensions();
|
|
41
|
+
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
childProcess.stdout?.on("data", (data: Buffer) => {
|
|
44
|
+
const newOutput = data.toString().split("\n");
|
|
45
|
+
setLogs((prevLogs) => [...prevLogs, ...newOutput]);
|
|
46
|
+
});
|
|
47
|
+
childProcess.stderr?.on("data", (data: Buffer) => {
|
|
48
|
+
const newOutput = data.toString().split("\n");
|
|
49
|
+
setLogs((prevLogs) => [...prevLogs, ...newOutput]);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
return () => {
|
|
53
|
+
childProcess.kill();
|
|
54
|
+
onExit();
|
|
55
|
+
};
|
|
56
|
+
}, [childProcess, onExit]);
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<Box width={width} height={height} flexDirection="column">
|
|
60
|
+
<Text bold>{appName} Frontend</Text>
|
|
61
|
+
{logs.map((log) => (
|
|
62
|
+
<Text key={log}>{log}</Text>
|
|
63
|
+
))}
|
|
64
|
+
</Box>
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
interface CsrProps {
|
|
69
|
+
app: AppType;
|
|
70
|
+
event: EventEmitter;
|
|
71
|
+
onExit: () => void;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const Csr = ({ app, event, onExit }: CsrProps) => {
|
|
75
|
+
const [logs, setLogs] = useState<string[]>([]);
|
|
76
|
+
const [width, height] = useStdoutDimensions();
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
event.on("info", (msg: string) => {
|
|
79
|
+
setLogs((prevLogs) => [...prevLogs, msg]);
|
|
80
|
+
});
|
|
81
|
+
event.on("warn", (msg: string) => {
|
|
82
|
+
setLogs((prevLogs) => [...prevLogs, msg]);
|
|
83
|
+
});
|
|
84
|
+
event.on("warnOnce", (msg: string) => {
|
|
85
|
+
setLogs((prevLogs) => [...prevLogs, msg]);
|
|
86
|
+
});
|
|
87
|
+
event.on("error", (msg: string) => {
|
|
88
|
+
setLogs((prevLogs) => [...prevLogs, msg]);
|
|
89
|
+
});
|
|
90
|
+
event.on("clearScreen", (type: string) => {
|
|
91
|
+
setLogs((prevLogs) => [...prevLogs, type]);
|
|
92
|
+
});
|
|
93
|
+
}, [event]);
|
|
94
|
+
return (
|
|
95
|
+
<Box width={width} height={height} flexDirection="column">
|
|
96
|
+
<Text bold>Akan.JS CSR</Text>
|
|
97
|
+
<Text>{logs}</Text>
|
|
98
|
+
</Box>
|
|
99
|
+
);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const filterLogData = (data: Buffer | string) => {
|
|
103
|
+
return typeof data === "string"
|
|
104
|
+
? data.split(/\r?\n/).filter((line) => line !== "")
|
|
105
|
+
: data
|
|
106
|
+
.toString()
|
|
107
|
+
.split(/\r?\n/)
|
|
108
|
+
.filter((line) => line !== "");
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
interface StartProps {
|
|
112
|
+
maxLength?: number;
|
|
113
|
+
appName: string;
|
|
114
|
+
bcp: ChildProcess;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Akan application 통합 실행 컴포넌트 (백엔드, 프론트엔드, React(CSR))
|
|
119
|
+
*
|
|
120
|
+
* @param maxLength 로그 최대 길이
|
|
121
|
+
* @param appName 앱 이름
|
|
122
|
+
* @param bcp 백엔드 차일드 프로세스
|
|
123
|
+
* @param onExit 종료 함수
|
|
124
|
+
*/
|
|
125
|
+
const Start = ({ appName, bcp, maxLength = 100 }: StartProps) => {
|
|
126
|
+
const [width, height] = useStdoutDimensions();
|
|
127
|
+
const [backendLogs, setBackendLogs] = useState<{ type: string; content: string }[]>([]);
|
|
128
|
+
const { exit } = useApp();
|
|
129
|
+
|
|
130
|
+
const saveLog = useCallback(
|
|
131
|
+
(
|
|
132
|
+
type: string,
|
|
133
|
+
data: Buffer | string,
|
|
134
|
+
setLog: React.Dispatch<React.SetStateAction<{ type: string; content: string }[]>>,
|
|
135
|
+
) => {
|
|
136
|
+
const newOutput = filterLogData(data);
|
|
137
|
+
const logs = newOutput.map((line) => ({ type: type, content: line }));
|
|
138
|
+
setLog((currentLogs) => {
|
|
139
|
+
if (currentLogs.length >= maxLength) {
|
|
140
|
+
return [...currentLogs.slice(logs.length, maxLength), ...logs];
|
|
141
|
+
} else if (currentLogs.length < maxLength && currentLogs.length + logs.length > maxLength) {
|
|
142
|
+
return [...currentLogs.slice(Math.abs(maxLength - currentLogs.length - logs.length), maxLength), ...logs];
|
|
143
|
+
} else return [...currentLogs, ...logs];
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
[maxLength],
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
bcp.stdout?.on("data", (data: Buffer) => {
|
|
151
|
+
saveLog("info", data, setBackendLogs);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
bcp.stderr?.on("data", (data: Buffer) => {
|
|
155
|
+
saveLog("error", data, setBackendLogs);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return () => {
|
|
159
|
+
exit();
|
|
160
|
+
};
|
|
161
|
+
}, [bcp, saveLog, exit]);
|
|
162
|
+
|
|
163
|
+
return (
|
|
164
|
+
<Box borderColor="#ff493b" height={height} width={width} flexDirection="row">
|
|
165
|
+
<MultiScrollList
|
|
166
|
+
logList={[
|
|
167
|
+
{
|
|
168
|
+
title: `${appName} backend`,
|
|
169
|
+
logs: backendLogs,
|
|
170
|
+
color: "#e535ab",
|
|
171
|
+
},
|
|
172
|
+
]}
|
|
173
|
+
maxLength={maxLength}
|
|
174
|
+
/>
|
|
175
|
+
</Box>
|
|
176
|
+
);
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export const Interface = {
|
|
180
|
+
/**
|
|
181
|
+
* Akan CSR 실행 컴포넌트
|
|
182
|
+
*
|
|
183
|
+
* @param app 앱 정보
|
|
184
|
+
* @param event CSR 이벤트 발생기
|
|
185
|
+
* @param onExit 종료 함수
|
|
186
|
+
*/
|
|
187
|
+
Csr: (app: AppType, event: EventEmitter, onExit: () => void) =>
|
|
188
|
+
renderManager(<Csr app={app} event={event} onExit={onExit} />),
|
|
189
|
+
/**
|
|
190
|
+
* Akan Backend 실행 컴포넌트
|
|
191
|
+
*
|
|
192
|
+
* @param appName 앱 이름
|
|
193
|
+
* @param childProcess 백엔드 차일드 프로세스
|
|
194
|
+
* @param onExit 종료 함수
|
|
195
|
+
*/
|
|
196
|
+
Backend: (appName: string, childProcess: ChildProcess, onExit: () => void) =>
|
|
197
|
+
renderManager(<Backend appName={appName} childProcess={childProcess} onExit={onExit} />),
|
|
198
|
+
/**
|
|
199
|
+
* Akan Frontend 실행 컴포넌트
|
|
200
|
+
*
|
|
201
|
+
* @param appName 앱 이름
|
|
202
|
+
* @param childProcess 프론트엔드 차일드 프로세스
|
|
203
|
+
* @param onExit 종료 함수
|
|
204
|
+
*/
|
|
205
|
+
Frontend: (appName: string, childProcess: ChildProcess, onExit: () => void) =>
|
|
206
|
+
renderManager(<Frontend appName={appName} childProcess={childProcess} onExit={onExit} />),
|
|
207
|
+
/**
|
|
208
|
+
* Akan application 통합 실행 컴포넌트 (백엔드, 프론트엔드, React(CSR))
|
|
209
|
+
*
|
|
210
|
+
* @param maxLength 로그 최대 길이
|
|
211
|
+
* @param appName 앱 이름
|
|
212
|
+
* @param bcp 백엔드 차일드 프로세스
|
|
213
|
+
* @param fcp 프론트엔드 차일드 프로세스
|
|
214
|
+
* @param csr CSR 이벤트 발생기
|
|
215
|
+
* @param onExit 종료 함수
|
|
216
|
+
*/
|
|
217
|
+
Start: (appName: string, bcp: ChildProcess) => renderManager(<Start appName={appName} bcp={bcp} />),
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
const renderManager = (component: React.ReactNode) => {
|
|
221
|
+
|
|
222
|
+
const renderFn = render(component);
|
|
223
|
+
|
|
224
|
+
return renderFn;
|
|
225
|
+
};
|