akanjs 0.0.1 → 2.0.0-beta.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/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 +11401 -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 +60 -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 +1326 -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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type Dayjs, dayjs, enumOf, type GetStateObject } from "akanjs/base";
|
|
2
|
+
|
|
3
|
+
export type QueryOf<T = any> = any;
|
|
4
|
+
|
|
5
|
+
export type ConstantType = "input" | "object" | "full" | "light" | "insight" | "scalar";
|
|
6
|
+
|
|
7
|
+
type ObjectToId<O> = O extends BaseObject
|
|
8
|
+
? string
|
|
9
|
+
: O extends BaseObject[]
|
|
10
|
+
? string[]
|
|
11
|
+
: O extends Dayjs
|
|
12
|
+
? Dayjs
|
|
13
|
+
: O extends object
|
|
14
|
+
? DocumentModel<O>
|
|
15
|
+
: O;
|
|
16
|
+
|
|
17
|
+
type Docify<T, _StateKeys extends keyof GetStateObject<T> = keyof GetStateObject<T>> = {
|
|
18
|
+
[K in _StateKeys as null extends T[K] ? never : K]: ObjectToId<T[K]>;
|
|
19
|
+
} & {
|
|
20
|
+
[K in _StateKeys as null extends T[K] ? K : never]?: ObjectToId<Exclude<T[K], null>> | undefined;
|
|
21
|
+
};
|
|
22
|
+
export type DocumentModel<T> = T extends (infer S)[]
|
|
23
|
+
? DocumentModel<S>[]
|
|
24
|
+
: T extends string | number | boolean | Dayjs | File
|
|
25
|
+
? T
|
|
26
|
+
: T extends Map<infer K, infer V>
|
|
27
|
+
? Map<K, DocumentModel<V>>
|
|
28
|
+
: Docify<T>;
|
|
29
|
+
|
|
30
|
+
export type FieldState<T> = T extends { id: string } ? T | null : T;
|
|
31
|
+
export type DefaultOf<S> = GetStateObject<{ [K in keyof S]: FieldState<S[K]> }>;
|
|
32
|
+
|
|
33
|
+
export type GetPlainObject<T, O extends string> = Omit<
|
|
34
|
+
{
|
|
35
|
+
[K in keyof T as T[K] extends (...args: never[]) => unknown
|
|
36
|
+
? never
|
|
37
|
+
: K extends "set" | "save" | "refresh"
|
|
38
|
+
? never
|
|
39
|
+
: K]: T[K];
|
|
40
|
+
},
|
|
41
|
+
O
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
export class BaseObject {
|
|
45
|
+
declare id: string;
|
|
46
|
+
declare createdAt: Dayjs;
|
|
47
|
+
declare updatedAt: Dayjs;
|
|
48
|
+
declare removedAt: Dayjs | null;
|
|
49
|
+
}
|
|
50
|
+
export class BaseInsight {
|
|
51
|
+
declare count: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface ProtoFile {
|
|
55
|
+
id: string;
|
|
56
|
+
filename: string;
|
|
57
|
+
abstractData: string | null;
|
|
58
|
+
imageSize: [number, number];
|
|
59
|
+
progress: number | null;
|
|
60
|
+
url: string;
|
|
61
|
+
size: number;
|
|
62
|
+
status: string;
|
|
63
|
+
createdAt: Dayjs;
|
|
64
|
+
updatedAt: Dayjs;
|
|
65
|
+
removedAt: Dayjs | null;
|
|
66
|
+
mimetype: string;
|
|
67
|
+
encoding: string;
|
|
68
|
+
origin: string | null;
|
|
69
|
+
lastModifiedAt: Dayjs;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface ProtoAppInfo {
|
|
73
|
+
appId: string | null;
|
|
74
|
+
appName: string;
|
|
75
|
+
deviceId: string | null;
|
|
76
|
+
platform: "ios" | "android" | null;
|
|
77
|
+
major: number;
|
|
78
|
+
minor: number;
|
|
79
|
+
patch: number;
|
|
80
|
+
branch: string;
|
|
81
|
+
buildNum: string | null;
|
|
82
|
+
versionOs: string | null;
|
|
83
|
+
isEmulator: boolean | null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface ProtoPatch {
|
|
87
|
+
source: ProtoFile;
|
|
88
|
+
build: ProtoFile;
|
|
89
|
+
appBuild: ProtoFile | null;
|
|
90
|
+
status: "active" | "expired";
|
|
91
|
+
at: Dayjs;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export const DEFAULT_PAGE_SIZE = 20;
|
|
95
|
+
export interface TextDoc {
|
|
96
|
+
[key: string]: string | TextDoc;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export type NonFunctionalKeys<T> = keyof T extends (...args: never[]) => unknown ? never : keyof T;
|
|
100
|
+
|
|
101
|
+
export const unsetDate = dayjs(new Date("0000"));
|
|
102
|
+
export const MAX_INT = 2147483647;
|
|
103
|
+
|
|
104
|
+
export class Responsive extends enumOf("responsive", ["xl", "lg", "md", "sm", "xs"] as const) {}
|
|
105
|
+
export const responsiveWidths = [1200, 992, 768, 576, 0] as const;
|
package/constant/via.ts
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { type Cls, type EnumInstance, FIELD_META, type MergeAllKeyOfObjects, type MergeAllTypes } from "akanjs/base";
|
|
2
|
+
import { applyMixins } from "akanjs/common";
|
|
3
|
+
import { immerable } from "immer";
|
|
4
|
+
|
|
5
|
+
import { crystalize, getDefault } from ".";
|
|
6
|
+
import { ConstantRegistry } from "./constantRegistry";
|
|
7
|
+
import {
|
|
8
|
+
ConstantField,
|
|
9
|
+
type ExtractFieldInfoObject,
|
|
10
|
+
type FieldBuilder,
|
|
11
|
+
type FieldInfoObject,
|
|
12
|
+
type FieldInfoObjectToFieldObject,
|
|
13
|
+
type FieldObject,
|
|
14
|
+
type FieldResolver,
|
|
15
|
+
field,
|
|
16
|
+
resolve,
|
|
17
|
+
} from "./fieldInfo";
|
|
18
|
+
import { makePurify, type PurifyFunc } from "./purify";
|
|
19
|
+
import type { BaseInsight, BaseObject, ConstantType, DefaultOf, NonFunctionalKeys } from "./types";
|
|
20
|
+
|
|
21
|
+
type BaseFields = "id" | "createdAt" | "updatedAt" | "removedAt";
|
|
22
|
+
type WithBase<T> = T & BaseObject;
|
|
23
|
+
type OmitBase<T> = Omit<T, BaseFields>;
|
|
24
|
+
type Merge<A, B> = B & Omit<A, keyof B>;
|
|
25
|
+
|
|
26
|
+
const objectModelOf = <T>(inputRef: ConstantCls<T>, fieldMap: FieldInfoObject): Cls<WithBase<T>> => {
|
|
27
|
+
const fieldObject = Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()]));
|
|
28
|
+
const applyFieldObject = { ...inputRef[FIELD_META], ...fieldObject };
|
|
29
|
+
const field = Object.assign(ConstantField.getBaseModelField(), applyFieldObject);
|
|
30
|
+
const baseObjectModelRef = getBaseConstantClass(field);
|
|
31
|
+
applyConstantStatics(baseObjectModelRef, applyFieldObject);
|
|
32
|
+
baseObjectModelRef.modelType = "object";
|
|
33
|
+
return baseObjectModelRef as unknown as Cls<WithBase<T>>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const lightModelOf = <T, F extends keyof OmitBase<T>>(
|
|
37
|
+
objectRef: ConstantCls<T>,
|
|
38
|
+
fields: readonly F[],
|
|
39
|
+
fieldMap: FieldInfoObject,
|
|
40
|
+
...libLightModelRefs: ConstantCls[]
|
|
41
|
+
): Cls<Pick<OmitBase<T>, F> & BaseObject> => {
|
|
42
|
+
const libLightModelRef = libLightModelRefs.at(0);
|
|
43
|
+
const applyFieldObject = {
|
|
44
|
+
...Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()])),
|
|
45
|
+
...Object.fromEntries(fields.map((field) => [field, objectRef[FIELD_META][field as string] as ConstantField])),
|
|
46
|
+
};
|
|
47
|
+
const field = Object.assign(libLightModelRef?.[FIELD_META] ?? ConstantField.getBaseModelField(), applyFieldObject);
|
|
48
|
+
const baseLightModelRef = getBaseConstantClass(field);
|
|
49
|
+
applyConstantStatics(baseLightModelRef, applyFieldObject);
|
|
50
|
+
applyMixins(baseLightModelRef, libLightModelRefs);
|
|
51
|
+
baseLightModelRef.modelType = "light";
|
|
52
|
+
return baseLightModelRef as unknown as Cls<Pick<OmitBase<T>, F> & BaseObject>;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const fullModelOf = <A, B = undefined>(
|
|
56
|
+
objectRef: ConstantCls<A>,
|
|
57
|
+
lightRef: ConstantCls<B>,
|
|
58
|
+
fieldMap: FieldInfoObject,
|
|
59
|
+
...libFullModelRefs: ConstantCls[]
|
|
60
|
+
): Cls<Merge<A, B>> => {
|
|
61
|
+
const fullRef = libFullModelRefs.at(0) ?? getBaseConstantClass(ConstantField.getBaseModelField());
|
|
62
|
+
const applyFieldObject = {
|
|
63
|
+
...objectRef[FIELD_META],
|
|
64
|
+
...lightRef[FIELD_META],
|
|
65
|
+
...Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()])),
|
|
66
|
+
};
|
|
67
|
+
Object.assign(fullRef[FIELD_META], applyFieldObject);
|
|
68
|
+
applyMixins(fullRef, [objectRef, lightRef, ...libFullModelRefs]);
|
|
69
|
+
libFullModelRefs.forEach((libFullModelRef) => {
|
|
70
|
+
applyMixins(libFullModelRef, [objectRef, lightRef]);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
applyConstantStatics(fullRef, applyFieldObject);
|
|
74
|
+
fullRef.modelType = "full";
|
|
75
|
+
return fullRef as unknown as Cls<Omit<A, keyof B> & B>;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const extendModelInputs = <T extends ConstantCls[]>(
|
|
79
|
+
fieldMap: FieldInfoObject,
|
|
80
|
+
...libInputModelRefs: T
|
|
81
|
+
): Cls<MergeAllTypes<T>> => {
|
|
82
|
+
const baseInputModelRef = libInputModelRefs.at(0);
|
|
83
|
+
const applyFieldObject = Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()]));
|
|
84
|
+
const fieldObject = Object.assign(baseInputModelRef?.[FIELD_META] ?? {}, applyFieldObject);
|
|
85
|
+
const baseInputRef = getBaseConstantClass(fieldObject);
|
|
86
|
+
applyConstantStatics(baseInputRef, applyFieldObject);
|
|
87
|
+
return baseInputRef as unknown as Cls<MergeAllTypes<T>>;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const extendModelObjects = <Input, ObjectModels extends ConstantCls[]>(
|
|
91
|
+
inputRef: ConstantCls<Input>,
|
|
92
|
+
fieldMap: FieldInfoObject,
|
|
93
|
+
...libObjectModelRefs: ObjectModels
|
|
94
|
+
): Cls<MergeAllTypes<ObjectModels> & Input> => {
|
|
95
|
+
const baseObjectModelRef = libObjectModelRefs.at(0);
|
|
96
|
+
const applyFieldObject = {
|
|
97
|
+
...inputRef[FIELD_META],
|
|
98
|
+
...Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()])),
|
|
99
|
+
};
|
|
100
|
+
const field = Object.assign(baseObjectModelRef?.[FIELD_META] ?? {}, applyFieldObject);
|
|
101
|
+
const baseInputRef = getBaseConstantClass(field, "object");
|
|
102
|
+
applyConstantStatics(baseInputRef, applyFieldObject);
|
|
103
|
+
return baseInputRef as unknown as Cls<MergeAllTypes<ObjectModels> & Input>;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const extendModelInsights = <InsightModels extends ConstantCls[]>(
|
|
107
|
+
fieldMap: FieldInfoObject,
|
|
108
|
+
...insightModelRefs: InsightModels
|
|
109
|
+
): Cls<MergeAllTypes<InsightModels>> => {
|
|
110
|
+
const baseInsightModelRef = insightModelRefs.at(0);
|
|
111
|
+
const applyFieldObject = Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()]));
|
|
112
|
+
const field = Object.assign(
|
|
113
|
+
baseInsightModelRef?.[FIELD_META] ?? ConstantField.getBaseInsightField(),
|
|
114
|
+
applyFieldObject,
|
|
115
|
+
);
|
|
116
|
+
const baseInsightRef = getBaseConstantClass(field, "insight");
|
|
117
|
+
|
|
118
|
+
applyConstantStatics(baseInsightRef, applyFieldObject);
|
|
119
|
+
return baseInsightRef as unknown as Cls<MergeAllTypes<InsightModels>>;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const getBaseConstantClass = (field: FieldObject, modelType: ConstantType = "scalar") => {
|
|
123
|
+
class BaseConstant {
|
|
124
|
+
static readonly [FIELD_META]: FieldObject = field;
|
|
125
|
+
static modelType: ConstantType = modelType;
|
|
126
|
+
static text: { search: Set<string>; filter: Set<string>; children: { search: Set<string>; filter: Set<string> } } =
|
|
127
|
+
{ search: new Set(), filter: new Set(), children: { search: new Set(), filter: new Set() } };
|
|
128
|
+
static children: Set<ConstantCls> = new Set();
|
|
129
|
+
static relations: Set<ConstantCls> = new Set();
|
|
130
|
+
static enums: Set<EnumInstance> = new Set();
|
|
131
|
+
[immerable] = true;
|
|
132
|
+
constructor(obj?: Partial<typeof this>) {
|
|
133
|
+
this.set({
|
|
134
|
+
...(this.constructor as ConstantCls).getDefault(),
|
|
135
|
+
...((obj ?? {}) as Partial<typeof this>),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
set(obj: Partial<typeof this>) {
|
|
139
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
140
|
+
|
|
141
|
+
if (!(this.constructor as ConstantCls)[FIELD_META][key] as unknown as object | undefined) return;
|
|
142
|
+
const field = (this.constructor as ConstantCls)[FIELD_META][key];
|
|
143
|
+
if (!field) throw new Error(`Field ${key} not found`);
|
|
144
|
+
const fieldProp = field.getProps();
|
|
145
|
+
(this as Record<string, unknown>)[key] = crystalize(fieldProp, value);
|
|
146
|
+
});
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return BaseConstant as unknown as ConstantCls;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const makeBaseScalar = <FieldMap extends FieldInfoObject>(
|
|
154
|
+
fieldMap: FieldMap,
|
|
155
|
+
): Cls<ExtractFieldInfoObject<FieldMap>> => {
|
|
156
|
+
const fieldObject = Object.fromEntries(Object.entries(fieldMap).map(([key, field]) => [key, field.toField()]));
|
|
157
|
+
const baseScalarRef = getBaseConstantClass(fieldObject, "scalar");
|
|
158
|
+
applyConstantStatics(baseScalarRef, fieldObject);
|
|
159
|
+
return baseScalarRef as unknown as Cls<ExtractFieldInfoObject<FieldMap>>;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export interface ConstantMethods<Schema = any> {
|
|
163
|
+
set: (obj: Partial<Schema>) => this;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface ConstantStatics<Schema = any, FieldObj extends FieldObject = FieldObject> {
|
|
167
|
+
[FIELD_META]: FieldObj;
|
|
168
|
+
getDefault: () => DefaultOf<Schema>;
|
|
169
|
+
purify: PurifyFunc<Schema>;
|
|
170
|
+
modelType: ConstantType;
|
|
171
|
+
children: Set<ConstantCls>;
|
|
172
|
+
relations: Set<ConstantCls>;
|
|
173
|
+
enums: Set<EnumInstance>;
|
|
174
|
+
text: { search: Set<string>; filter: Set<string>; children: { search: Set<string>; filter: Set<string> } };
|
|
175
|
+
}
|
|
176
|
+
export type ConstantCls<Schema = any, FieldObj extends FieldObject = FieldObject> = (new (
|
|
177
|
+
obj?: Partial<Schema>,
|
|
178
|
+
) => Schema & ConstantMethods<Schema>) &
|
|
179
|
+
ConstantStatics<Schema, FieldObj>;
|
|
180
|
+
|
|
181
|
+
declare global {
|
|
182
|
+
|
|
183
|
+
interface DateConstructor extends ConstantStatics<unknown> {}
|
|
184
|
+
interface StringConstructor extends ConstantStatics<unknown> {}
|
|
185
|
+
interface BooleanConstructor extends ConstantStatics<unknown> {}
|
|
186
|
+
interface MapConstructor extends ConstantStatics<unknown> {}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const applyConstantStatics = <Model>(model: ConstantCls<Model>, fieldMap: FieldObject): ConstantCls<Model> => {
|
|
190
|
+
const defaultValue = getDefault(model[FIELD_META]);
|
|
191
|
+
Object.assign(model, {
|
|
192
|
+
purify: makePurify(model),
|
|
193
|
+
getDefault: () => ({ ...defaultValue }),
|
|
194
|
+
});
|
|
195
|
+
Object.entries(fieldMap).forEach(([key, field]) => {
|
|
196
|
+
if (field.enum) model.enums.add(field.enum);
|
|
197
|
+
if (field.text === "search") model.text.search.add(key);
|
|
198
|
+
else if (field.text === "filter") model.text.filter.add(key);
|
|
199
|
+
else if (field.isClass) {
|
|
200
|
+
if (field.isScalar) model.children.add(field.modelRef);
|
|
201
|
+
else model.relations.add(field.modelRef);
|
|
202
|
+
for (const child of field.modelRef.children) model.children.add(child);
|
|
203
|
+
for (const childEnum of field.modelRef.enums) model.enums.add(childEnum);
|
|
204
|
+
for (const relation of field.modelRef.relations) model.relations.add(relation);
|
|
205
|
+
for (const relationEnum of field.modelRef.enums) model.enums.add(relationEnum);
|
|
206
|
+
field.modelRef.text.search.forEach((subKey) => {
|
|
207
|
+
model.text.children.search.add(`${key}.${subKey}`);
|
|
208
|
+
});
|
|
209
|
+
field.modelRef.text.filter.forEach((subKey) => {
|
|
210
|
+
model.text.children.filter.add(`${key}.${subKey}`);
|
|
211
|
+
});
|
|
212
|
+
field.modelRef.text.children.search.forEach((subKey) => {
|
|
213
|
+
model.text.children.search.add(`${key}.${subKey}`);
|
|
214
|
+
});
|
|
215
|
+
field.modelRef.text.children.filter.forEach((subKey) => {
|
|
216
|
+
model.text.children.filter.add(`${key}.${subKey}`);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
return model as unknown as ConstantCls<Model>;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/** Builds Akan constant models such as scalar, input, object, light, full, and insight classes. */
|
|
224
|
+
export function via<
|
|
225
|
+
Obj extends BaseObject,
|
|
226
|
+
ObjFieldObj extends FieldObject,
|
|
227
|
+
K extends NonFunctionalKeys<OmitBase<Obj>>,
|
|
228
|
+
ResolveField extends (resolve: FieldResolver) => FieldInfoObject,
|
|
229
|
+
LightModels extends Cls[],
|
|
230
|
+
_Schema = MergeAllTypes<LightModels> & Pick<Obj, K> & BaseObject & ExtractFieldInfoObject<ReturnType<ResolveField>>,
|
|
231
|
+
_FieldObj extends FieldObject = MergeAllKeyOfObjects<LightModels, typeof FIELD_META> &
|
|
232
|
+
Pick<ObjFieldObj, K & keyof ObjFieldObj> &
|
|
233
|
+
FieldInfoObjectToFieldObject<ReturnType<ResolveField>>,
|
|
234
|
+
>(
|
|
235
|
+
modelRef: Cls<Obj, { [FIELD_META]: ObjFieldObj }>,
|
|
236
|
+
fields: readonly K[],
|
|
237
|
+
resolveField: ResolveField,
|
|
238
|
+
...lightModelRefs: LightModels
|
|
239
|
+
): ConstantCls<_Schema, _FieldObj>;
|
|
240
|
+
|
|
241
|
+
export function via<
|
|
242
|
+
BuildField extends (builder: FieldBuilder) => FieldInfoObject,
|
|
243
|
+
Inputs extends Cls[],
|
|
244
|
+
_Schema = MergeAllTypes<Inputs> & ExtractFieldInfoObject<ReturnType<BuildField>>,
|
|
245
|
+
_FieldObj extends FieldObject = MergeAllKeyOfObjects<Inputs, typeof FIELD_META> &
|
|
246
|
+
FieldInfoObjectToFieldObject<ReturnType<BuildField>>,
|
|
247
|
+
>(buildField: BuildField, ...extendInputRefs: Inputs): ConstantCls<_Schema, _FieldObj>;
|
|
248
|
+
|
|
249
|
+
export function via<
|
|
250
|
+
Full extends BaseObject,
|
|
251
|
+
BuildField extends (builder: FieldBuilder) => FieldInfoObject,
|
|
252
|
+
Insights extends Cls[],
|
|
253
|
+
_Schema = MergeAllTypes<Insights> & BaseInsight & ExtractFieldInfoObject<ReturnType<BuildField>>,
|
|
254
|
+
_FieldObj extends FieldObject = MergeAllKeyOfObjects<Insights, typeof FIELD_META> &
|
|
255
|
+
FieldInfoObjectToFieldObject<ReturnType<BuildField>>,
|
|
256
|
+
>(modelRef: Cls<Full>, buildField: BuildField, ...extendInsightRefs: Insights): ConstantCls<_Schema, _FieldObj>;
|
|
257
|
+
|
|
258
|
+
export function via<
|
|
259
|
+
Input,
|
|
260
|
+
InputFieldObj extends FieldObject,
|
|
261
|
+
BuildField extends (builder: FieldBuilder) => FieldInfoObject,
|
|
262
|
+
ObjectModels extends Cls[],
|
|
263
|
+
_Schema = MergeAllTypes<ObjectModels> & Input & BaseObject & ExtractFieldInfoObject<ReturnType<BuildField>>,
|
|
264
|
+
_FieldObj extends FieldObject = MergeAllKeyOfObjects<ObjectModels, typeof FIELD_META> &
|
|
265
|
+
InputFieldObj &
|
|
266
|
+
FieldInfoObjectToFieldObject<ReturnType<BuildField>>,
|
|
267
|
+
>(
|
|
268
|
+
inputRef: Cls<Input, { [FIELD_META]: InputFieldObj }>,
|
|
269
|
+
buildField: BuildField,
|
|
270
|
+
...extendObjectRefs: ObjectModels
|
|
271
|
+
): ConstantCls<_Schema, _FieldObj>;
|
|
272
|
+
|
|
273
|
+
export function via<
|
|
274
|
+
Obj,
|
|
275
|
+
ObjFieldObj extends FieldObject,
|
|
276
|
+
Light,
|
|
277
|
+
LightFieldObj extends FieldObject,
|
|
278
|
+
ResolveField extends (resolve: FieldResolver) => FieldInfoObject,
|
|
279
|
+
FullModels extends Cls[],
|
|
280
|
+
_Schema = MergeAllTypes<FullModels> & Obj & Light & ExtractFieldInfoObject<ReturnType<ResolveField>>,
|
|
281
|
+
_FieldObj extends FieldObject = MergeAllKeyOfObjects<FullModels, typeof FIELD_META> &
|
|
282
|
+
ObjFieldObj &
|
|
283
|
+
LightFieldObj &
|
|
284
|
+
FieldInfoObjectToFieldObject<ReturnType<ResolveField>>,
|
|
285
|
+
>(
|
|
286
|
+
objectRef: Cls<Obj, { [FIELD_META]: ObjFieldObj }>,
|
|
287
|
+
lightModelRef: Cls<Light, { [FIELD_META]: LightFieldObj }>,
|
|
288
|
+
resolveField: ResolveField,
|
|
289
|
+
...fullModelRefs: FullModels
|
|
290
|
+
): ConstantCls<_Schema, _FieldObj>;
|
|
291
|
+
|
|
292
|
+
export function via(
|
|
293
|
+
firstRefOrBuildField: Cls | ((builder: FieldBuilder) => FieldInfoObject),
|
|
294
|
+
secondRefOrFieldsOrBuildField?: Cls | readonly unknown[] | ((builder: FieldBuilder) => FieldInfoObject),
|
|
295
|
+
thirdRefOrResolveField?: Cls | ((resolve: FieldResolver) => FieldInfoObject),
|
|
296
|
+
...extendRefs: Cls[]
|
|
297
|
+
): any {
|
|
298
|
+
|
|
299
|
+
if (
|
|
300
|
+
!firstRefOrBuildField.prototype ||
|
|
301
|
+
!(firstRefOrBuildField as Cls<unknown, { modelType?: ConstantType }>).modelType
|
|
302
|
+
) {
|
|
303
|
+
const buildField = firstRefOrBuildField as (builder: FieldBuilder) => FieldInfoObject;
|
|
304
|
+
const fieldMap = buildField(field);
|
|
305
|
+
const extendInputRefs = [
|
|
306
|
+
...(secondRefOrFieldsOrBuildField ? [secondRefOrFieldsOrBuildField as Cls] : []),
|
|
307
|
+
...(thirdRefOrResolveField ? [thirdRefOrResolveField as Cls] : []),
|
|
308
|
+
...extendRefs,
|
|
309
|
+
] as ConstantCls[];
|
|
310
|
+
if (!secondRefOrFieldsOrBuildField) return makeBaseScalar(fieldMap);
|
|
311
|
+
else return extendModelInputs(fieldMap, ...extendInputRefs);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if (Array.isArray(secondRefOrFieldsOrBuildField)) {
|
|
315
|
+
const resolveField = thirdRefOrResolveField as (resolve: FieldResolver) => FieldInfoObject;
|
|
316
|
+
const fieldMap = resolveField(resolve);
|
|
317
|
+
return lightModelOf(
|
|
318
|
+
firstRefOrBuildField as ConstantCls,
|
|
319
|
+
secondRefOrFieldsOrBuildField as unknown as readonly never[],
|
|
320
|
+
fieldMap,
|
|
321
|
+
...(extendRefs as ConstantCls[]),
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (
|
|
326
|
+
!(secondRefOrFieldsOrBuildField as Cls).prototype ||
|
|
327
|
+
!(secondRefOrFieldsOrBuildField as Cls<unknown, { modelType?: ConstantType }>).modelType
|
|
328
|
+
) {
|
|
329
|
+
const buildField = secondRefOrFieldsOrBuildField as (builder: FieldBuilder) => FieldInfoObject;
|
|
330
|
+
const fieldMap = buildField(field);
|
|
331
|
+
|
|
332
|
+
if (ConstantRegistry.isScalar(firstRefOrBuildField as Cls<unknown, { modelType: ConstantType }>)) {
|
|
333
|
+
if (!thirdRefOrResolveField) return objectModelOf(firstRefOrBuildField as ConstantCls, fieldMap);
|
|
334
|
+
else
|
|
335
|
+
return extendModelObjects(
|
|
336
|
+
firstRefOrBuildField as ConstantCls,
|
|
337
|
+
fieldMap,
|
|
338
|
+
thirdRefOrResolveField as ConstantCls,
|
|
339
|
+
...(extendRefs as ConstantCls[]),
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
if (ConstantRegistry.isFull(firstRefOrBuildField as Cls<unknown, { modelType: ConstantType }>)) {
|
|
344
|
+
const extendInsightRefs = [
|
|
345
|
+
...(thirdRefOrResolveField ? [thirdRefOrResolveField as Cls] : []),
|
|
346
|
+
...extendRefs,
|
|
347
|
+
] as ConstantCls[];
|
|
348
|
+
return extendModelInsights(fieldMap, ...extendInsightRefs);
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
const objectRef = firstRefOrBuildField as ConstantCls;
|
|
352
|
+
const lightRef = secondRefOrFieldsOrBuildField as ConstantCls;
|
|
353
|
+
const resolveField = thirdRefOrResolveField as (resolve: FieldResolver) => FieldInfoObject;
|
|
354
|
+
const fieldMap = resolveField(resolve);
|
|
355
|
+
return fullModelOf(objectRef, lightRef, fieldMap, ...(extendRefs as ConstantCls[]));
|
|
356
|
+
}
|
|
357
|
+
throw new Error(
|
|
358
|
+
`Invalid modelRef args ${firstRefOrBuildField as Cls} ${secondRefOrFieldsOrBuildField as Cls} ${extendRefs.join(", ")}`,
|
|
359
|
+
);
|
|
360
|
+
}
|