@codeyam/codeyam-cli 0.1.0-staging.596f0eb → 0.1.0-staging.62d4615
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/analyzer-template/.build-info.json +8 -8
- package/analyzer-template/common/execAsync.ts +1 -1
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +16 -12
- package/analyzer-template/packages/ai/index.ts +20 -5
- package/analyzer-template/packages/ai/package.json +3 -3
- package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +214 -24
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +205 -10
- package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +38 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1518 -125
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +318 -5
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +2301 -348
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +7 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +976 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +243 -77
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +71 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +161 -19
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +93 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +422 -86
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +156 -0
- package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
- package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
- package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +89 -112
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +63 -2
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1394 -92
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +216 -109
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +578 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2267 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
- package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +17 -7
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +90 -6
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -53
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
- package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
- package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +127 -3
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +121 -2
- package/analyzer-template/packages/analyze/index.ts +2 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
- package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
- package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +522 -272
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +34 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
- package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
- package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +313 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +625 -52
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +550 -137
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +917 -130
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
- package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
- package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
- package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
- package/analyzer-template/packages/aws/package.json +3 -3
- package/analyzer-template/packages/aws/s3/index.ts +1 -0
- package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
- package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
- package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
- package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
- package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +12 -5
- package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
- package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
- package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
- package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
- package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
- package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
- package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
- package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
- package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
- package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
- package/analyzer-template/packages/generate/index.ts +3 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
- package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
- package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +10 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +30 -7
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
- package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
- package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.js +3 -0
- package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +2 -2
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +87 -13
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +3 -0
- package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +11 -6
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +199 -3
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/github/package.json +1 -1
- package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
- package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
- package/analyzer-template/packages/process/index.ts +2 -0
- package/analyzer-template/packages/process/package.json +12 -0
- package/analyzer-template/packages/process/tsconfig.json +8 -0
- package/analyzer-template/packages/types/index.ts +5 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +104 -13
- package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +11 -10
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +228 -3
- package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
- package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
- package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
- package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +87 -13
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +3 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +11 -6
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +199 -3
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
- package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
- package/analyzer-template/playwright/capture.ts +57 -26
- package/analyzer-template/playwright/captureStatic.ts +1 -1
- package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
- package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
- package/analyzer-template/playwright/takeScreenshot.ts +9 -7
- package/analyzer-template/playwright/waitForServer.ts +21 -6
- package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
- package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
- package/analyzer-template/project/analyzeFileEntities.ts +4 -0
- package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
- package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
- package/analyzer-template/project/constructMockCode.ts +1268 -167
- package/analyzer-template/project/controller/startController.ts +16 -1
- package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
- package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
- package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
- package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
- package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
- package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +93 -42
- package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
- package/analyzer-template/project/orchestrateCapture.ts +81 -9
- package/analyzer-template/project/reconcileMockDataKeys.ts +245 -2
- package/analyzer-template/project/runAnalysis.ts +11 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
- package/analyzer-template/project/serverOnlyModules.ts +194 -21
- package/analyzer-template/project/start.ts +61 -15
- package/analyzer-template/project/startScenarioCapture.ts +79 -41
- package/analyzer-template/project/writeMockDataTsx.ts +405 -65
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +862 -183
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +31 -23
- package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
- package/analyzer-template/scripts/defaultCmd.sh +9 -0
- package/analyzer-template/tsconfig.json +2 -1
- package/background/src/lib/local/createLocalAnalyzer.js +1 -29
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/local/execAsync.js +1 -1
- package/background/src/lib/local/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/common/execAsync.js +1 -1
- package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
- package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +1126 -126
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/controller/startController.js +11 -1
- package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
- package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +73 -36
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +65 -10
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +204 -2
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +163 -23
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +53 -15
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +61 -31
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +354 -54
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +624 -127
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
- package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +31 -21
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +180 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -1
- package/codeyam-cli/src/cli.js +9 -1
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +1 -1
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +174 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -0
- package/codeyam-cli/src/commands/debug.js +42 -18
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +0 -15
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/memory.js +264 -0
- package/codeyam-cli/src/commands/memory.js.map +1 -0
- package/codeyam-cli/src/commands/recapture.js +226 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -0
- package/codeyam-cli/src/commands/report.js +72 -24
- package/codeyam-cli/src/commands/report.js.map +1 -1
- package/codeyam-cli/src/commands/start.js +8 -12
- package/codeyam-cli/src/commands/start.js.map +1 -1
- package/codeyam-cli/src/commands/status.js +23 -1
- package/codeyam-cli/src/commands/status.js.map +1 -1
- package/codeyam-cli/src/commands/test-startup.js +1 -1
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/wipe.js +108 -0
- package/codeyam-cli/src/commands/wipe.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +31 -27
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +29 -15
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +18 -4
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/database.js +91 -5
- package/codeyam-cli/src/utils/database.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +253 -106
- package/codeyam-cli/src/utils/generateReport.js.map +1 -1
- package/codeyam-cli/src/utils/git.js +79 -0
- package/codeyam-cli/src/utils/git.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +76 -17
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +249 -16
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +25 -7
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +128 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +285 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +83 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
- package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
- package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +96 -0
- package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +33 -0
- package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
- package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
- package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
- package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
- package/codeyam-cli/src/utils/rules/index.js +6 -0
- package/codeyam-cli/src/utils/rules/index.js.map +1 -0
- package/codeyam-cli/src/utils/rules/parser.js +78 -0
- package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
- package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
- package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
- package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
- package/codeyam-cli/src/utils/rules/staleness.js +137 -0
- package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
- package/codeyam-cli/src/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +7 -5
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/versionInfo.js +25 -19
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/utils/wipe.js +128 -0
- package/codeyam-cli/src/utils/wipe.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +104 -3
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +49 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CA3JxPb7.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-B86KKU7e.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-efWKDYMr.js → EntityTypeBadge-B5ctlSYt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BqY8gDAW.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ClaLpuOo.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-BDhPilK7.js +25 -0
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-VeqEBv9v.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-Bs7Nn1Jr.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-Bm3PmcCz.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-C6PKeMYR.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Gq3Ocjo6.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BNLaXBHR.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-COPstp9J.js → TruncatedFilePath-CiwXDxLh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-B3TDXxnk.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DD1r_QU0.js +27 -0
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/book-open-PttOB2SF.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-TJp6ofnp.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-JE9ZIoBl.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-CXhHQYrI.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/copy-6y9ALfGT.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-Ca9fAY46.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C5lqplTC.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-n38keI1k.js +23 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DGgZjdFg.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-38yPijoD.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-BSHEfydn.js +29 -0
- package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DCPhhSMo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-Dk8wkAS7.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-DXnyr8uP.js +15 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-Bh6jH0cL.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-CcsFv748.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-ChN9-fAY.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/labs-BUvfJMNR.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CTqLEAGU.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-d4e77269.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/memory-DCHBwHou.js +76 -0
- package/codeyam-cli/src/webserver/build/client/assets/pause-D6vreykR.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-D6oziHts.js +62 -0
- package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-B8VUL8nl.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-B2X7lJgQ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CPoAg7Zo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/terminal-BrCP7uQo.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BZz2NjYa.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DNwUduNu.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-3pmpUQB-.js → useLastLogLine-COky1GVF.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CpZgwliL.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-DEyawJ8r.js → useToast-Bv9JFvUO.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-C0KrUQp-.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-C2h1v1XD.js +260 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/devServer.js +1 -3
- package/codeyam-cli/src/webserver/devServer.js.map +1 -1
- package/codeyam-cli/src/webserver/server.js +35 -25
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
- package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +48 -4
- package/codeyam-cli/templates/codeyam:diagnose.md +803 -0
- package/codeyam-cli/templates/codeyam:memory.md +404 -0
- package/codeyam-cli/templates/codeyam:new-rule.md +13 -0
- package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam:setup.md} +139 -4
- package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam:sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam:test.md} +1 -1
- package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam:verify.md} +1 -1
- package/codeyam-cli/templates/rule-notification-hook.py +54 -0
- package/codeyam-cli/templates/rule-reflection-hook.py +428 -0
- package/codeyam-cli/templates/rules-instructions.md +123 -0
- package/package.json +22 -19
- package/packages/ai/index.js +8 -6
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +167 -13
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +154 -9
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
- package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +23 -0
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +1157 -103
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +24 -9
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/completionCall.js +178 -31
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1816 -216
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +7 -2
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +661 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +180 -56
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +66 -2
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +139 -13
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
- package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +83 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
- package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +355 -77
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructureChunking.js +111 -0
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
- package/packages/ai/src/lib/deepEqual.js +32 -0
- package/packages/ai/src/lib/deepEqual.js.map +1 -0
- package/packages/ai/src/lib/e2eDataTracking.js +241 -0
- package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +81 -90
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +50 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +1109 -85
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +193 -83
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +400 -0
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1646 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
- package/packages/ai/src/lib/isolateScopes.js +270 -7
- package/packages/ai/src/lib/isolateScopes.js.map +1 -1
- package/packages/ai/src/lib/mergeStatements.js +88 -46
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +16 -4
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -64
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +68 -6
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -34
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
- package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
- package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
- package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
- package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js +98 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
- package/packages/analyze/index.js +1 -0
- package/packages/analyze/index.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
- package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/analysisContext.js +30 -5
- package/packages/analyze/src/lib/analysisContext.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +268 -52
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
- package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
- package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
- package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +255 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +483 -48
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +404 -85
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +56 -69
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +768 -117
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
- package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/index.js +1 -0
- package/packages/analyze/src/lib/index.js.map +1 -1
- package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
- package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +10 -3
- package/packages/database/src/lib/kysely/db.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
- package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadAnalyses.js +45 -2
- package/packages/database/src/lib/loadAnalyses.js.map +1 -1
- package/packages/database/src/lib/loadAnalysis.js +8 -0
- package/packages/database/src/lib/loadAnalysis.js.map +1 -1
- package/packages/database/src/lib/loadBranch.js +11 -1
- package/packages/database/src/lib/loadBranch.js.map +1 -1
- package/packages/database/src/lib/loadCommit.js +7 -0
- package/packages/database/src/lib/loadCommit.js.map +1 -1
- package/packages/database/src/lib/loadCommits.js +22 -1
- package/packages/database/src/lib/loadCommits.js.map +1 -1
- package/packages/database/src/lib/loadEntities.js +23 -4
- package/packages/database/src/lib/loadEntities.js.map +1 -1
- package/packages/database/src/lib/loadEntityBranches.js +9 -0
- package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/packages/database/src/lib/updateCommitMetadata.js +5 -4
- package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
- package/packages/generate/index.js +3 -0
- package/packages/generate/index.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/packages/generate/src/lib/deepMerge.js +27 -1
- package/packages/generate/src/lib/deepMerge.js.map +1 -1
- package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
- package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
- package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/packages/process/index.js +3 -0
- package/packages/process/index.js.map +1 -0
- package/packages/process/src/GlobalProcessManager.js.map +1 -0
- package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
- package/packages/process/src/ProcessManager.js.map +1 -0
- package/packages/process/src/index.js.map +1 -0
- package/packages/process/src/managedExecAsync.js.map +1 -0
- package/packages/types/index.js.map +1 -1
- package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/packages/utils/src/lib/safeFileName.js +29 -3
- package/packages/utils/src/lib/safeFileName.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +6 -4
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
- package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
- package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
- package/analyzer-template/process/README.md +0 -507
- package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
- package/background/src/lib/process/ProcessManager.js.map +0 -1
- package/background/src/lib/process/index.js.map +0 -1
- package/background/src/lib/process/managedExecAsync.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CVbSvOjo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-DcwcHyl5.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-WgwC1GfJ.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-IEKom9O2.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-BYnfxbUG.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-_lBPJCzG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-lHVhvsu_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-d_TBk4GQ.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-kGT7VUqj.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DDGmhu7P.js +0 -7
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-n_HPRfM_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CbVoyx1U.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-D1VOYveA.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-YR8jjAlu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B8vP3V_s.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CN6aLCT1.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DA5Jeu2P.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BTeitalf.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-du6UEYD-.js +0 -13
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-BpjkhMoi.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-BQGvk4lJ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-DVdYRT-I.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/index-DCG-vks0.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-GazdNeLl.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-0b694d28.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-D3tQP7hx.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CIY6XmtE.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CoMDgElu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-agkniXp2.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-B2VUcygF.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-EvdK-zXP.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-DGVHQEXD.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CghkTkIL.js +0 -166
- package/codeyam-cli/templates/debug-command.md +0 -303
- package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
- package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -136
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/isFrontend.js +0 -5
- package/packages/ai/src/lib/isFrontend.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -72
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
- /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
- /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{w as J,u as ee,b as se,d as te,r as d,j as e,L as x}from"./chunk-WWGJGFF6-CbVoyx1U.js";import{u as le}from"./useLastLogLine-3pmpUQB-.js";import{u as ae}from"./useToast-DEyawJ8r.js";import{u as ne}from"./useReportContext-EvdK-zXP.js";import{L as re}from"./LogViewer-BYnfxbUG.js";import{I as j,C as V,E as ie}from"./EntityTypeIcon-DcwcHyl5.js";import{S as _}from"./SafeScreenshot-lHVhvsu_.js";import{c as H}from"./createLucideIcon-YR8jjAlu.js";import{C as oe}from"./circle-check-D1VOYveA.js";import{L as w}from"./loader-circle-GazdNeLl.js";const ce=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],de=H("folder-open",ce);const me=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],xe=H("zap",me),he="/assets/codeyam-name-logo-CvKwUgHo.svg",ke=()=>[{title:"Dashboard - CodeYam"},{name:"description",content:"CodeYam project dashboard"}],Se=J(function(){const{stats:v,uncommittedFiles:y,uncommittedEntitiesList:C,recentSimulations:h,visualEntitiesForSimulation:f,projectSlug:u,queueState:F,currentCommit:P}=ee(),i=se(),R=te(),{showToast:m}=ae();ne({source:"dashboard"});const[W,I]=d.useState(new Set),[o,T]=d.useState(null),[U,A]=d.useState(!1),[L,k]=d.useState(!1),{lastLine:S,isCompleted:z,resetLogs:q}=le(u,!!o),{simulatingEntity:b,scenarios:N,scenarioStatuses:Z,allScenariosCaptured:E}=d.useMemo(()=>{const s={simulatingEntity:null,scenarios:[],scenarioStatuses:[],allScenariosCaptured:!1};if(!o)return s;const t=f?.find(r=>r.sha===o);if(!t)return s;const l=t.analyses?.[0],n=l?.scenarios||[],a=l?.status?.scenarios||[],p=a.filter(r=>r.screenshotFinishedAt).length,g=n.length>0&&p===n.length;return{simulatingEntity:t,scenarios:n,scenarioStatuses:a,allScenariosCaptured:g}},[o,f]);d.useEffect(()=>{(z||E)&&T(null)},[z,E]);const Q=P?.metadata?.currentRun,$=new Set(Q?.currentEntityShas||[]),M=new Set(F.jobs.flatMap(s=>s.entityShas||[])),B=new Set(F.currentlyExecuting?.entityShas||[]),D=C.filter(s=>s.entityType==="visual"||s.entityType==="library"),c=D.filter(s=>!$.has(s.sha)&&!M.has(s.sha)&&!B.has(s.sha)),Y=()=>{if(c.length===0){m("All entities are already queued or analyzing","info",3e3);return}console.log("Analyzing uncommitted entities not yet queued:",c.length),console.log("Entity SHAs:",c.map(s=>s.sha)),k(!0),m(`Starting analysis for ${c.length} entities...`,"info",3e3),i.submit({entityShas:c.map(s=>s.sha).join(",")},{method:"post",action:"/api/analyze"})};d.useEffect(()=>{if(i.state==="idle"&&i.data){const s=i.data;s.success?(console.log("[Analyze All] Success:",s.message),m(`Analysis started for ${s.entityCount} entities in ${s.fileCount} files. Watch the logs for progress.`,"success",6e3),k(!1)):s.error&&(console.error("[Analyze All] Error:",s.error),m(`Error: ${s.error}`,"error",8e3),k(!1))}},[i.state,i.data,m]);const O=(s,t)=>{console.log("Simulating entity:",s);const l=f?.find(n=>n.sha===s);T(s),q(),m(`Starting analysis for ${l?.name||"entity"}...`,"info",3e3),i.submit({entitySha:s,filePath:t},{method:"post",action:"/api/analyze"})},G=s=>{I(t=>{const l=new Set(t);return l.has(s)?l.delete(s):l.add(s),l})},K=d.useMemo(()=>{const s=new Map;return h.forEach(t=>{const l=t.entitySha;s.has(l)||s.set(l,[]),s.get(l).push(t)}),Array.from(s.entries()).map(([t,l])=>({entitySha:t,entityName:l[0].entityName,scenarios:l}))},[h]),X=[{label:"Total Entities",value:v.totalEntities,iconType:"folder",link:"/files",color:"#F59E0B"},{label:"Analyzed Entities",value:v.entitiesWithAnalyses,iconType:"check",link:"/simulations",color:"#10B981"},{label:"Visual Components",value:v.visualEntities,iconType:"image",link:"/files?entityType=visual",color:"#8B5CF6"},{label:"Library Functions",value:v.libraryEntities,iconType:"code-xml",link:"/files?entityType=library",color:"#0DBFE9"}];return e.jsx("div",{className:"bg-cygray-10 min-h-screen",children:e.jsxs("div",{className:"pt-10 pb-6 px-12",children:[e.jsxs("header",{className:"mb-8 flex justify-between items-center",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("img",{src:he,alt:"CodeYam",className:"h-3.5"}),e.jsx("span",{className:"text-gray-400 text-sm",children:"|"}),e.jsxs("h1",{className:"text-sm font-normal text-gray-600 m-0",children:["Overview of"," ",e.jsx("span",{className:"font-semibold",children:u?u.replace(/-/g," ").replace(/\b\w/g,s=>s.toUpperCase()):"Project"})]})]}),R.state==="loading"&&e.jsx("div",{className:"text-blue-600 text-sm font-medium animate-pulse",children:"🔄 Updating..."})]}),e.jsx("div",{className:"flex items-center justify-between gap-3",children:X.map((s,t)=>e.jsx(x,{to:s.link,className:"flex-1 bg-white rounded-xl border border-gray-200 overflow-hidden flex transition-all hover:shadow-lg hover:-translate-y-0.5 no-underline cursor-pointer",style:{borderLeft:`4px solid ${s.color}`},children:e.jsxs("div",{className:"px-6 py-4 flex flex-col gap-3 flex-1",children:[e.jsxs("div",{className:"flex md:justify-between md:items-start md:flex-row flex-col",children:[e.jsx("div",{className:"text-xs text-gray-700 font-medium",children:s.label}),e.jsx("div",{className:"text-xs font-medium transition-colors flex items-center gap-1 sm:hidden md:flex",style:{color:s.color},children:"View All →"})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"rounded-lg p-2 leading-none shrink-0",style:{backgroundColor:`${s.color}15`},children:[s.iconType==="folder"&&e.jsx(de,{size:20,style:{color:s.color}}),s.iconType==="check"&&e.jsx(oe,{size:20,style:{color:s.color}}),s.iconType==="image"&&e.jsx(j,{size:20,style:{color:s.color}}),s.iconType==="code-xml"&&e.jsx(V,{size:20,style:{color:s.color}})]}),e.jsx("div",{className:"text-2xl font-bold text-gray-900 leading-none",children:s.value})]}),e.jsx("div",{className:"text-xs font-medium transition-colors flex items-center gap-1 md:hidden",style:{color:s.color},children:"View All →"})]})]})},t))}),e.jsxs("div",{className:"mt-12 grid gap-8 items-start",style:{gridTemplateColumns:"repeat(auto-fit, minmax(500px, 1fr))"},children:[e.jsxs("section",{id:"uncommitted",className:"bg-white border border-gray-200 rounded-xl p-6",children:[e.jsxs("div",{className:"flex justify-between items-start mb-5",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-[22px] font-semibold text-gray-900 m-0 mb-1",children:"Uncommitted Changes"}),e.jsx("p",{className:"text-sm text-gray-500 m-0",children:y.length>0?`${y.length} file${y.length!==1?"s":""} with ${C.length} uncommitted entit${C.length!==1?"ies":"y"}`:"No uncommitted changes detected"})]}),D.length>0&&e.jsx("button",{onClick:Y,disabled:i.state!=="idle"||L||c.length===0,className:"px-5 py-2.5 text-white border-none rounded-lg text-sm font-semibold cursor-pointer transition-all hover:-translate-y-px disabled:bg-gray-400 disabled:cursor-not-allowed disabled:translate-y-0",style:{backgroundColor:"#005C75"},onMouseEnter:s=>s.currentTarget.style.backgroundColor="#004560",onMouseLeave:s=>s.currentTarget.style.backgroundColor="#005C75",children:i.state!=="idle"||L?"Starting analysis...":c.length===0?"All Queued":`Analyze All (${c.length})`})]}),y.length>0?e.jsx("div",{className:"flex flex-col gap-3",children:y.map(([s,t])=>{const l=W.has(s),n=t.editedEntities||[];return e.jsxs("div",{className:"bg-white border border-gray-200 border-l-4 rounded-lg overflow-hidden",style:{borderLeftColor:"#306AFF"},children:[e.jsx("div",{className:"p-4 cursor-pointer select-none transition-colors hover:bg-gray-50",onClick:()=>G(s),role:"button",tabIndex:0,children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-gray-500 text-xs w-4 shrink-0",children:l?"▼":"▶"}),e.jsxs("svg",{width:"16",height:"20",viewBox:"0 0 12 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"shrink-0",children:[e.jsxs("g",{clipPath:"url(#clip0_784_10666)",children:[e.jsx("path",{d:"M0 2.55857C0 1.14551 1.14551 0 2.55857 0H8.73194L12 3.3616V13.4414C12 14.8545 10.8545 16 9.44143 16H2.55857C1.14551 16 0 14.8545 0 13.4414V2.55857Z",fill:"#DDDDFE"}),e.jsx("path",{d:"M8.72656 3.3307H11.9906L8.72656 0V3.3307Z",fill:"#306AFF"}),e.jsx("line",{x1:"1.8125",y1:"5.94825",x2:"10.0235",y2:"5.94825",stroke:"#306AFF",strokeWidth:"1.27929"}),e.jsx("line",{x1:"1.8125",y1:"8.82715",x2:"6.01207",y2:"8.82715",stroke:"#306AFF",strokeWidth:"1.27929"}),e.jsx("line",{x1:"1.8125",y1:"11.7061",x2:"10.0235",y2:"11.7061",stroke:"#306AFF",strokeWidth:"1.27929"})]}),e.jsx("defs",{children:e.jsx("clipPath",{id:"clip0_784_10666",children:e.jsx("rect",{width:"12",height:"16",fill:"white"})})})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"font-normal text-gray-900 text-sm block truncate",children:s}),e.jsxs("span",{className:"text-xs text-gray-500",children:[n.length," entit",n.length!==1?"ies":"y"]})]})]})}),l&&e.jsx("div",{className:"border-t border-gray-200 bg-gray-50 p-3 flex flex-col gap-2",children:n.length>0?n.map(a=>{const p=$.has(a.sha),g=M.has(a.sha)||B.has(a.sha);return e.jsxs(x,{to:`/entity/${a.sha}`,className:"flex items-center gap-4 p-4 bg-white border border-gray-200 rounded-lg no-underline transition-all hover:shadow-md hover:-translate-y-0.5",style:{borderColor:"inherit"},onMouseEnter:r=>r.currentTarget.style.borderColor="#005C75",onMouseLeave:r=>r.currentTarget.style.borderColor="inherit",children:[e.jsxs("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center",style:{backgroundColor:a.entityType==="visual"?"#8B5CF615":a.entityType==="library"?"#6366F1":"#EC4899"},children:[a.entityType==="visual"&&e.jsx(j,{size:16,style:{color:"#8B5CF6"}}),a.entityType==="library"&&e.jsx(V,{size:16,className:"text-white"}),a.entityType==="other"&&e.jsx(xe,{size:16,className:"text-white"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("div",{className:"font-semibold text-gray-900 text-sm",children:a.name}),a.entityType==="visual"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#8B5CF60D",color:"#8B5CF6"},children:"Visual"}),a.entityType==="library"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#0DBFE90D",color:"#0DBFE9"},children:"Library"}),a.entityType==="other"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#EC48990D",color:"#EC4899"},children:"Other"})]}),a.description&&e.jsx("div",{className:"text-sm text-gray-500 mt-1 overflow-hidden text-ellipsis whitespace-nowrap",children:a.description})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[p&&e.jsxs("div",{className:"px-2 py-1 bg-pink-100 rounded text-xs text-pink-700 font-semibold flex items-center gap-1.5",children:[e.jsx(w,{size:14,className:"animate-spin"}),"Analyzing..."]}),!p&&g&&e.jsx("div",{className:"px-2 py-1 bg-purple-50 border border-purple-300 rounded text-xs text-purple-700 font-semibold",children:"⏳ Queued"}),!p&&!g&&e.jsx("button",{onClick:r=>{r.preventDefault(),r.stopPropagation(),m(`Starting analysis for ${a.name}...`,"info",3e3),i.submit({entityShas:a.sha},{method:"post",action:"/api/analyze"})},disabled:i.state!=="idle",className:"px-3 py-1.5 text-white border-none rounded text-xs font-medium cursor-pointer transition-all disabled:bg-gray-400 disabled:cursor-not-allowed",style:{backgroundColor:"#005C75"},onMouseEnter:r=>r.currentTarget.style.backgroundColor="#004560",onMouseLeave:r=>r.currentTarget.style.backgroundColor="#005C75",children:"Analyze"})]})]},a.sha)}):e.jsx("div",{className:"text-sm text-gray-500 italic p-2",children:"No entity changes detected in this file"})})]},s)})}):e.jsxs("div",{className:"py-12 px-6 text-center flex flex-col items-center bg-gray-50 rounded-lg min-h-50 justify-center",children:[e.jsxs("svg",{width:"52",height:"68",viewBox:"0 0 26 34",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"mb-4 opacity-40",children:[e.jsxs("g",{clipPath:"url(#clip0_784_10631)",children:[e.jsx("path",{d:"M0 2.55857C0 1.14551 1.14551 0 2.55857 0H18.9423L26.0318 7.14651V31.4562C26.0318 32.8693 24.8863 34.0148 23.4732 34.0148H2.55857C1.14551 34.0148 0 32.8693 0 31.4562V2.55857Z",fill:"#D9D9D9"}),e.jsx("path",{d:"M18.9453 7.08081H26.0261L18.9453 0V7.08081Z",fill:"#646464"}),e.jsx("line",{x1:"3.92188",y1:"13.3633",x2:"21.7341",y2:"13.3633",stroke:"#646464",strokeWidth:"1.27929"}),e.jsx("line",{x1:"3.92188",y1:"19.4863",x2:"13.0321",y2:"19.4863",stroke:"#646464",strokeWidth:"1.27929"}),e.jsx("line",{x1:"3.92188",y1:"25.6016",x2:"21.7341",y2:"25.6016",stroke:"#646464",strokeWidth:"1.27929"})]}),e.jsx("defs",{children:e.jsx("clipPath",{id:"clip0_784_10631",children:e.jsx("rect",{width:"26",height:"34",fill:"white"})})})]}),e.jsx("p",{className:"text-sm font-medium text-gray-400 m-0 mb-2",children:"No Uncommitted Changes."})]})]}),e.jsxs("section",{className:"bg-white border border-gray-200 rounded-xl p-6",children:[e.jsx("div",{className:"flex justify-between items-start mb-5",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-[22px] font-semibold text-gray-900 m-0 mb-1",children:"Recent Simulations"}),e.jsx("p",{className:"text-sm text-gray-500 m-0",children:h.length>0?`Latest ${h.length} captured screenshot${h.length!==1?"s":""}`:"No simulations captured yet"})]})}),h.length>0&&!o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-6 mb-5",children:K.map(s=>e.jsxs("div",{children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center bg-purple-100",children:e.jsx(j,{size:16,style:{color:"#8B5CF6"}})}),e.jsx(x,{to:`/entity/${s.entitySha}`,className:"text-sm font-semibold text-gray-900 no-underline hover:text-gray-700 transition-colors",children:s.entityName})]}),e.jsx("div",{className:"grid grid-cols-4 gap-3",children:s.scenarios.map((t,l)=>e.jsx(x,{to:t.scenarioId?`/entity/${t.entitySha}/scenarios/${t.scenarioId}`:`/entity/${t.entitySha}`,className:"aspect-4/3 border border-gray-200 rounded-lg overflow-hidden bg-gray-50 transition-all flex items-center justify-center hover:scale-105",onMouseEnter:n=>{n.currentTarget.style.borderColor="#005C75",n.currentTarget.style.boxShadow="0 4px 12px rgba(0, 92, 117, 0.2)"},onMouseLeave:n=>{n.currentTarget.style.borderColor="#E5E7EB",n.currentTarget.style.boxShadow="none"},title:`${t.scenarioName}`,children:e.jsx(_,{screenshotPath:t.screenshotPath,alt:t.scenarioName,className:"max-w-full max-h-full object-contain object-center"})},l))})]},s.entitySha))}),e.jsx(x,{to:"/simulations",className:"block text-center p-3 rounded-lg no-underline font-semibold text-sm transition-all",style:{color:"#005C75",backgroundColor:"#F6F9FC"},onMouseEnter:s=>s.currentTarget.style.backgroundColor="#EEF4F8",onMouseLeave:s=>s.currentTarget.style.backgroundColor="#F6F9FC",children:"View All Recent Simulations →"})]}):o?e.jsxs("div",{className:"p-0 bg-white rounded-lg flex flex-col gap-0",children:[b&&e.jsx("div",{className:"p-4 rounded-t-lg",style:{backgroundColor:"#F0F5F8",borderBottom:"2px solid #005C75"},children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[32px] leading-none",children:e.jsx(ie,{type:"visual"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"text-base font-bold mb-1",style:{color:"#005C75"},children:["Generating Simulations for ",b.name]}),e.jsx("div",{className:"text-[13px] text-gray-500 font-mono overflow-hidden text-ellipsis whitespace-nowrap",children:b.filePath})]})]})}),E?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-emerald-600 font-medium p-4 bg-emerald-50",children:[e.jsx("span",{className:"text-lg",children:"✅"}),e.jsxs("span",{children:["Complete (",N.length," scenario",N.length!==1?"s":"",")"]})]}):S?e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap font-mono text-xs",title:S,children:S}),u&&e.jsx("button",{onClick:()=>A(!0),className:"px-2 py-1.5 bg-gray-500 text-white border-none rounded-md text-[13px] font-medium cursor-pointer transition-all whitespace-nowrap self-start hover:bg-gray-600 hover:-translate-y-px",title:"View analysis logs",children:"📋 Logs"})]}):i.state!=="idle"?e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap",children:"Initializing analysis..."})]}):e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap",children:"Starting analysis..."})]}),N.length>0&&e.jsx("div",{className:"flex gap-2 flex-wrap p-4 bg-white border-t border-gray-200",children:N.slice(0,8).map((s,t)=>{const l=s.metadata?.screenshotPaths?.[0],n=Z.find(g=>g.name===s.name),a=n?.screenshotStartedAt&&!n?.screenshotFinishedAt;return l?e.jsx(x,{to:`/entity/${o}`,className:"w-20 h-15 border-2 border-gray-200 rounded overflow-hidden bg-gray-50 cursor-pointer transition-all flex items-center justify-center no-underline hover:border-blue-600 hover:scale-105 hover:shadow-md",children:e.jsx(_,{screenshotPath:l,alt:s.name,title:s.name,className:"max-w-full max-h-full object-contain object-center"})},t):e.jsx("div",{className:"w-20 h-15 border-2 border-dashed border-gray-300 rounded bg-gray-50 flex items-center justify-center text-2xl",title:`Capturing ${s.name}...`,children:e.jsx("span",{className:a?"animate-pulse":"text-gray-400",children:a?"⋯":"⏹️"})},t)})})]}):e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsxs("div",{className:"py-12 px-6 text-center bg-gray-50 rounded-lg w-full flex flex-col items-center justify-center min-h-50",children:[e.jsx("div",{className:"mb-4 bg-[#efefef] rounded-lg p-3",children:e.jsx(j,{size:28,style:{color:"#999999"},strokeWidth:1.5})}),e.jsx("p",{className:"text-gray-700 m-0 font-semibold",children:"Start by analyzing your first component below."})]}),(f?.length??0)>0?e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-col gap-3 mt-6 w-full",children:(o&&b?[b]:f||[]).map(s=>e.jsx("div",{className:"flex flex-col gap-3",children:e.jsxs("div",{className:"flex items-center gap-4 p-4 bg-white border border-gray-200 rounded-lg transition-colors",style:{borderLeft:"4px solid #8B5CF6"},onMouseEnter:t=>{t.currentTarget.style.backgroundColor="#F9FAFB"},onMouseLeave:t=>{t.currentTarget.style.backgroundColor="white"},children:[e.jsxs(x,{to:`/entity/${s.sha}`,className:"flex items-center gap-4 flex-1 min-w-0 no-underline",children:[e.jsx("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center bg-purple-100",children:e.jsx(j,{size:16,style:{color:"#8B5CF6"}})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-semibold text-gray-900 text-sm mb-1",children:s.name}),e.jsx("div",{className:"text-xs text-gray-500 font-mono overflow-hidden text-ellipsis whitespace-nowrap",children:s.filePath})]})]}),e.jsx("button",{onClick:()=>O(s.sha,s.filePath||""),disabled:i.state!=="idle"||o!==null,className:"px-4 py-2 text-white border-none rounded text-sm font-medium cursor-pointer transition-all whitespace-nowrap shrink-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:translate-y-0",style:{backgroundColor:"#005C75"},onMouseEnter:t=>t.currentTarget.style.backgroundColor="#004560",onMouseLeave:t=>t.currentTarget.style.backgroundColor="#005C75",title:o?"Please wait for current analysis to complete":"Analyze this entity",children:"Analyze"})]})},s.sha))})}):e.jsx("p",{className:"text-base text-gray-600 m-0 mb-6 leading-relaxed mt-6",children:"Run analysis on your visual components to create simulations and capture screenshots"})]})]})]}),U&&u&&e.jsx(re,{projectSlug:u,onClose:()=>A(!1)})]})})});export{Se as default,ke as meta};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{j as e,w as R,u as F,h as K,r as P,L as u,d as V}from"./chunk-WWGJGFF6-CbVoyx1U.js";import{L as B}from"./LogViewer-BYnfxbUG.js";import{u as q}from"./useLastLogLine-3pmpUQB-.js";import{u as U}from"./useReportContext-EvdK-zXP.js";import{E as M}from"./EntityTypeIcon-DcwcHyl5.js";import{E as O}from"./EntityTypeBadge-efWKDYMr.js";import{S as W}from"./SafeScreenshot-lHVhvsu_.js";import{L as Q}from"./loader-circle-GazdNeLl.js";import{c as $}from"./createLucideIcon-YR8jjAlu.js";const J=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],Y=$("ban",J);const G=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]],I=$("circle-pause",G);const X=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]],Z=$("file-code",X);const ee=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],te=$("grip-vertical",ee);const se=[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1",key:"cif1o7"}]],re=$("list-todo",se),ie={analyzer:{bgColor:"#e1e1e1",textColor:"#3e3e3e",borderColor:"#e1e1e1"},capture:{bgColor:"#e1e1e1",textColor:"#3e3e3e",borderColor:"#e1e1e1"},running:{bgColor:"#e8ffe6",textColor:"#00925d",borderColor:"#c3f3bf"},error:{bgColor:"#fee2e2",textColor:"#991b1b",borderColor:"#fecaca"}};function D({variant:l,pid:t,label:g,className:a=""}){const c=ie[l],i=g||(l==="analyzer"&&t?`Analyzer: ${t}`:l==="capture"&&t?`Capture: ${t}`:l==="running"?"Running":l==="error"?"Error":"");return e.jsx("div",{className:`inline-flex items-center justify-center px-[8px] rounded-[4px] ${a}`,style:{backgroundColor:c.bgColor,borderWidth:"1px",borderStyle:"solid",borderColor:c.borderColor,height:"20px"},children:e.jsx("span",{className:"font-['IBM_Plex_Sans']",style:{fontSize:"10px",fontWeight:400,lineHeight:"15px",color:c.textColor},children:i})})}function le({activeTab:l,hasCurrentActivity:t,queuedCount:g,historicCount:a}){const c=[{id:"current",label:"Current Activity",hasContent:t,count:t?1:null},{id:"queued",label:"Queued Activity",hasContent:g>0,count:g},{id:"historic",label:"Historic Activity",hasContent:a>0,count:a}];return e.jsx("div",{className:"border-b border-gray-200 mb-6",children:e.jsx("nav",{className:"flex gap-8",children:c.map(i=>{const d=l===i.id;return e.jsx(u,{to:i.id==="current"?"/activity":`/activity/${i.id}`,className:`
|
|
2
|
-
relative pb-4 px-2 text-sm font-medium transition-colors cursor-pointer
|
|
3
|
-
${d?"border-b-2":"text-gray-500 hover:text-gray-700"}
|
|
4
|
-
`,style:d?{color:"#005C75",borderColor:"#005C75"}:{},children:e.jsxs("span",{className:"flex items-center gap-2",children:[i.label,i.count!==null&&i.count>0&&e.jsx("span",{className:`inline-flex items-center justify-center px-2 py-0.5 text-xs font-semibold rounded-full ${d?"bg-[#cbf3fa] text-[#005c75]":"bg-[#e1e1e1] text-[#3e3e3e]"}`,children:i.count}),i.count===null&&i.hasContent&&e.jsx("span",{className:`
|
|
5
|
-
inline-block w-2 h-2 rounded-full
|
|
6
|
-
${d?"":"bg-gray-400"}
|
|
7
|
-
`,style:d?{backgroundColor:"#005C75"}:{}})]})},i.id)})})})}function ne({currentlyExecuting:l,currentRun:t,state:g,projectSlug:a,commitSha:c,onShowLogs:i,recentCompletedEntities:d,hasMoreCompletedRuns:x,currentEntityScenarios:w,currentEntityForScenarios:m}){const[h,y]=P.useState({}),[A,N]=P.useState({isKilling:!1,current:0,total:0}),T=V(),s=!!l,o=l?.entities||[],p=!!t?.analysisCompletedAt,k=p&&!!t?.capturePid,H=!p,j=s,v=w||[],{lastLine:_}=q(a,j);P.useEffect(()=>{if(!t)return;const r=[t.analyzerPid,t.capturePid].filter(b=>!!b);if(r.length===0)return;let f=!0;const C=async()=>{try{const z=await(await fetch(`/api/process-status?pids=${r.join(",")}`)).json();if(z.processes&&f){const E={};z.processes.forEach(L=>{E[L.pid]={isRunning:L.isRunning,processName:L.processName}}),y(E)}}catch(b){f&&console.error("Failed to fetch process statuses:",b)}};C();const n=setInterval(()=>{C()},5e3);return()=>{f=!1,clearInterval(n)}},[t?.analyzerPid,t?.capturePid]);const S=o?.[0];return e.jsxs("div",{className:"flex flex-col gap-[45px]",children:[j?e.jsxs("div",{className:"rounded-[10px] p-[15px]",style:{backgroundColor:"#f6f9fc",border:"2px solid #005C75"},children:[e.jsxs("div",{className:"flex items-center gap-2 mb-[15px]",children:[e.jsx(Q,{size:14,strokeWidth:2.5,className:"animate-spin",style:{color:"#005c75"}}),e.jsx("span",{className:"font-medium",style:{fontSize:"14px",lineHeight:"18px",color:"#005c75"},children:k?"Capturing...":"Analyzing..."})]}),S&&e.jsxs("div",{className:"bg-white border border-[#e1e1e1] rounded-[4px] mb-[15px]",style:{height:"60px",padding:"0 15px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[e.jsxs("div",{className:"inline-grid place-items-start relative",style:{gridTemplateColumns:"max-content",gridTemplateRows:"max-content",lineHeight:0},children:[e.jsx("div",{className:"relative",style:{gridArea:"1 / 1",marginLeft:"10px",marginTop:"8.97px"},children:e.jsx("div",{style:{transform:"scale(1.33)"},children:e.jsx(M,{type:S.entityType||"other"})})}),e.jsxs("div",{className:"flex flex-col gap-[1px] relative",style:{gridArea:"1 / 1",marginLeft:"49px",marginTop:"0"},children:[e.jsxs("div",{className:"flex items-center gap-[14px]",children:[e.jsx(u,{to:`/entity/${S.sha}`,className:"hover:underline cursor-pointer",style:{fontSize:"14px",lineHeight:"18px",fontWeight:500,color:"#000"},children:S.name}),S.entityType&&e.jsx(O,{type:S.entityType})]}),e.jsx("div",{className:"truncate",style:{fontSize:"12px",lineHeight:"15px",color:"#8e8e8e",width:"422px"},title:S.filePath,children:S.filePath})]})]}),e.jsx("button",{onClick:i,className:"px-[10px] rounded-[4px] transition-colors whitespace-nowrap cursor-pointer",style:{backgroundColor:"#e0e9ec",color:"#005c75",fontSize:"10px",lineHeight:"22px",fontWeight:600},children:"View Logs"})]}),k&&v&&v.length>0&&m&&e.jsx("div",{className:"flex gap-[10px] overflow-x-auto mb-[15px]",children:v.map(r=>{if(!r.id)return null;const f=r.metadata?.screenshotPaths?.[0],C=r.metadata?.noScreenshotSaved,n=f&&!C;return e.jsx(u,{to:`/entity/${m.sha}/scenarios/${r.id}`,className:"border border-[#ccc] border-solid rounded-[6px] overflow-hidden flex-shrink-0 cursor-pointer",style:{width:"160px",height:"90px"},children:n?e.jsx(W,{screenshotPath:f,cacheBuster:Date.now(),alt:r.name,className:"w-full h-full object-contain bg-gray-100"}):e.jsx("div",{className:"w-full h-full bg-gray-100 flex items-center justify-center text-xs text-gray-400",children:"No preview"})},r.id)})}),_&&e.jsx("div",{className:"mb-[15px] font-['IBM_Plex_Mono']",style:{fontSize:"12px",lineHeight:"20px",fontWeight:500,color:"#005c75"},children:_}),e.jsx("div",{className:"mb-[15px]",style:{height:"1px",backgroundColor:"#e0e9ec"}}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{style:{fontSize:"12px",lineHeight:"15px",fontWeight:400,color:"#000"},children:["Running Processes:"," "]}),t?.analyzerPid&&e.jsx(D,{variant:"analyzer",pid:t.analyzerPid}),t?.analyzerPid&&(H||h[t.analyzerPid]?.isRunning)&&e.jsx(D,{variant:"running"}),t?.capturePid&&e.jsx(D,{variant:"capture",pid:t.capturePid}),t?.capturePid&&(k||h[t.capturePid]?.isRunning)&&e.jsx(D,{variant:"running"})]}),(h[t?.analyzerPid]?.isRunning||h[t?.capturePid]?.isRunning)&&e.jsx("button",{onClick:()=>{const r=[t?.analyzerPid,t?.capturePid].filter(n=>!!n&&h[n]?.isRunning);if(r.length===0)return;const f=r.join(", ");if(!confirm(`Are you sure you want to kill all running processes (${f})?`))return;N({isKilling:!0,current:1,total:r.length}),(async()=>{for(let n=0;n<r.length;n++){const b=r[n];try{await fetch("/api/kill-process",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pid:b,commitSha:c||""})})}catch(z){console.error(`Failed to kill process ${b}:`,z)}n<r.length-1&&N({isKilling:!0,current:n+2,total:r.length})}N({isKilling:!1,current:0,total:0}),T.revalidate()})()},disabled:A.isKilling,className:"px-[8px] rounded-[4px] transition-colors whitespace-nowrap cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed",style:{backgroundColor:"#991b1b",color:"white",fontSize:"12px",lineHeight:"15px",fontWeight:500,height:"27px",width:"114px"},children:A.isKilling?"Killing...":"Kill All Processes"})]})]}):e.jsxs("div",{className:"bg-[#efefef] rounded-xl p-8 text-center",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"p-[10px] bg-gray-200 rounded",children:e.jsx(I,{size:24,className:"text-gray-600"})})}),e.jsx("h3",{className:"font-semibold text-gray-700 mb-2",style:{fontSize:"16px",lineHeight:"24px"},children:"No Current Activity"}),e.jsxs("p",{className:"text-gray-500",style:{fontSize:"14px",lineHeight:"18px"},children:["There are no analyses currently running. Trigger an analysis from the"," ",e.jsx(u,{to:"/git",className:"text-[#005C75] underline hover:text-[#004a5e] font-medium cursor-pointer",children:"Git"})," ","or"," ",e.jsx(u,{to:"/files",className:"text-[#005C75] underline hover:text-[#004a5e] font-medium cursor-pointer",children:"Files"})," ","page."]})]}),d&&d.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold",style:{fontSize:"16px",lineHeight:"24px",color:"#343434",marginBottom:"16px"},children:"Recently Completed Analyses"}),e.jsx("div",{className:"flex flex-col gap-4",children:d.map(r=>{const f=r.analyses?.[0],C=f?.scenarios||[];return f?.status,e.jsx("div",{className:"rounded-[8px] p-[15px]",style:{backgroundColor:"#f2fcf9",border:"2px solid #aff1a9"},children:e.jsxs("div",{className:"flex flex-col gap-[15px]",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0",style:{transform:"scale(1.33)",marginLeft:"10px"},children:e.jsx(M,{type:r.entityType||"other"})}),e.jsxs("div",{className:"flex flex-col flex-shrink-0",style:{marginLeft:"15px",gap:"4px"},children:[e.jsxs("div",{className:"flex items-center gap-[5px]",children:[e.jsx(u,{to:`/entity/${r.sha}`,className:"hover:underline cursor-pointer",title:r.name,style:{fontSize:"14px",lineHeight:"18px",color:"#343434",fontWeight:500},children:r.name}),e.jsx("div",{className:"flex items-center justify-center px-2 rounded",style:{height:"20px",backgroundColor:"#e8ffe6",color:"#00925d",fontSize:"12px",lineHeight:"16px",fontWeight:400},children:r.isUncommitted?"Modified":"Up to date"})]}),e.jsx("div",{style:{fontSize:"13px",lineHeight:"18px",color:"#646464",fontWeight:400,width:"422px"},className:"truncate",title:r.filePath,children:r.filePath})]}),e.jsx("div",{className:"flex-1"}),e.jsx("div",{className:"flex-shrink-0",children:e.jsx("button",{onClick:i,className:"px-[10px] rounded transition-colors whitespace-nowrap",style:{backgroundColor:"#e0e9ec",color:"#005c75",fontSize:"10px",lineHeight:"22px",fontWeight:600},onMouseEnter:n=>{n.currentTarget.style.backgroundColor="#d0dfe3"},onMouseLeave:n=>{n.currentTarget.style.backgroundColor="#e0e9ec"},children:"View Logs"})})]}),C.length>0?e.jsx("div",{className:"flex gap-[10px] overflow-x-auto",children:C.map((n,b)=>{if(!n.id)return null;const z=n.metadata?.screenshotPaths?.[0],E=n.metadata?.noScreenshotSaved,L=z&&!E;return e.jsx(u,{to:`/entity/${r.sha}/scenarios/${n.id}`,className:"border border-[#ccc] border-solid rounded-[6px] overflow-hidden flex-shrink-0 cursor-pointer",style:{width:"144px",height:"96px"},children:L?e.jsx(W,{screenshotPath:z,cacheBuster:Date.now(),alt:n.name,className:"w-full h-full object-contain bg-gray-100"}):e.jsx("div",{className:"w-full h-full bg-gray-100 flex items-center justify-center text-xs text-gray-400",children:"No preview"})},b)})}):e.jsx("div",{className:"italic",style:{fontSize:"12px",color:"#646464"},children:"No scenarios available"})]})},r.sha)})})]})]})}function oe({queueJobs:l,state:t,currentRun:g}){if(!l||l.length===0)return e.jsxs("div",{className:"rounded-xl p-12 text-center",style:{backgroundColor:"#f3f3f3"},children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"p-[10px] rounded",style:{backgroundColor:"#e5e5e5"},children:e.jsx(re,{size:24,style:{color:"#646464"}})})}),e.jsx("h3",{className:"font-semibold mb-2",style:{fontSize:"16px",lineHeight:"24px",color:"#343434"},children:"No Queued Jobs"}),e.jsx("p",{style:{fontSize:"14px",lineHeight:"18px",color:"#646464"},children:"Analysis jobs will appear here when they are queued but not yet started."})]});const[a,c]=P.useState(null),[i,d]=P.useState(null),[x,w]=P.useState(null),m=s=>{c(s)},h=(s,o)=>{s.preventDefault(),d(o)},y=async(s,o)=>{if(s.preventDefault(),a===null||a===o){c(null),d(null);return}const p=l[a],k=a<o?"down":"up",H=Math.abs(o-a);try{for(let j=0;j<H;j++)await fetch("/api/queue",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"reorder",jobId:p.id,direction:k})})}catch(j){console.error("Failed to reorder job:",j)}c(null),d(null)},A=()=>{c(null),d(null)},N=async s=>{if(confirm("Are you sure you want to cancel this job?"))try{await fetch("/api/queue",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",jobId:s})}),window.location.reload()}catch(o){console.error("Failed to cancel job:",o)}},T=async()=>{if(confirm(`Are you sure you want to cancel all ${l.length} queued jobs?`))try{await fetch("/api/queue",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clear"})}),window.location.reload()}catch(s){console.error("Failed to cancel jobs:",s)}};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"font-semibold",style:{fontSize:"16px",lineHeight:"24px",color:"#343434"},children:[l.length," Queued Job",l.length!==1?"s":""]}),l.length>0&&e.jsx("button",{onClick:()=>{T()},className:"px-[10px] py-0 rounded transition-colors cursor-pointer hover:bg-red-300",style:{backgroundColor:"#ffdcd9",color:"#ef4444",fontSize:"12px",fontWeight:500,height:"29px"},children:"Cancel All"})]}),e.jsx("div",{className:"flex flex-col gap-3",children:l.map((s,o)=>{const p=s.entities?.[0],k=x===o,H=a===o,j=i===o;return e.jsxs("div",{className:"rounded-lg p-4 relative",style:{backgroundColor:"#f6f9fc",border:"2px solid #005C75",opacity:H?.5:1,transform:j&&a!==null&&a!==o?"translateY(-2px)":"translateY(0)",transition:"transform 0.2s ease, opacity 0.2s ease"},onMouseEnter:()=>w(o),onMouseLeave:()=>w(null),draggable:!0,onDragStart:v=>{m(o),v.dataTransfer.effectAllowed="move"},onDragOver:v=>h(v,o),onDrop:v=>{y(v,o)},onDragEnd:A,children:[e.jsxs("div",{className:"absolute left-4 top-4 flex items-center gap-1.5 flex-shrink-0",children:[e.jsx(I,{size:16,style:{color:"#005C75"}}),e.jsxs("span",{style:{fontSize:"14px",fontWeight:500,lineHeight:"18px",color:"#005C75"},children:["Job ",o+1]})]}),e.jsx("div",{className:"bg-white rounded cursor-pointer mt-8",style:{border:"1px solid #e1e1e1",height:"60px"},children:e.jsxs("div",{className:"flex items-center justify-between h-full px-[15px]",children:[p?e.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[e.jsx("div",{style:{transform:"scale(1.0)"},children:e.jsx(M,{type:p.entityType||"other"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(u,{to:`/entity/${p.sha}`,className:"hover:underline cursor-pointer",style:{fontSize:"14px",lineHeight:"18px",fontWeight:500,color:"#000"},children:p.name}),p.entityType&&e.jsx(O,{type:p.entityType})]}),e.jsx("div",{style:{fontSize:"12px",lineHeight:"15px",color:"#8e8e8e"},children:p.filePath})]})]}):e.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[e.jsx("div",{style:{transform:"scale(1.0)"},children:e.jsx(Z,{size:18,style:{color:"#8e8e8e"}})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{style:{fontSize:"14px",lineHeight:"18px",fontWeight:500,color:"#000"},children:s.entityNames?.[0]||(s.type==="analysis"?"Analysis Job":s.type==="recapture"?"Recapture Job":s.type==="debug-setup"?"Debug Setup":s.type.charAt(0).toUpperCase()+s.type.slice(1))}),e.jsx("div",{style:{fontSize:"12px",lineHeight:"15px",color:"#8e8e8e"},children:s.filePaths?.[0]||(s.filePaths&&s.filePaths.length>1?`${s.filePaths.length} files`:s.entityShas&&s.entityShas.length>0?`${s.entityShas.length} ${s.entityShas.length===1?"entity":"entities"}`:"Queued for processing")})]})]}),k&&e.jsx("div",{className:"mr-2 cursor-grab active:cursor-grabbing",style:{color:"#8e8e8e"},title:"Drag to reorder",children:e.jsx(te,{size:20})}),e.jsx("button",{onClick:()=>{N(s.id)},className:"transition-colors cursor-pointer hover:bg-red-100 rounded flex items-center justify-center",style:{fontSize:"10px",fontWeight:600,lineHeight:"22px",color:"#ef4444",backgroundColor:"#fef6f6",padding:"0 10px",height:"22px"},children:"Cancel"})]})})]},s.id)})})]})}function ae({historicalRuns:l,totalHistoricalRuns:t,currentPage:g,totalPages:a,tab:c,onShowLogs:i}){if(t===0)return e.jsxs("div",{className:"rounded-xl p-12 text-center",style:{backgroundColor:"#EFEFEF"},children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx(Y,{size:24,style:{color:"#646464"}})}),e.jsx("h3",{className:"font-semibold mb-2",style:{fontSize:"16px",lineHeight:"24px",color:"#343434"},children:"No Historic Activity"}),e.jsx("p",{style:{fontSize:"14px",lineHeight:"18px",color:"#646464"},children:"Completed analyses will appear here for historical reference."})]});const d=[];return l.forEach(x=>{x.entities&&x.entities.length>0&&x.entities.forEach(w=>{d.push({...w,runCreatedAt:x.createdAt})})}),e.jsx("div",{className:"flex flex-col gap-4",children:d.slice(0,20).map(x=>{const m=x.analyses?.[0]?.scenarios||[],h=!x.isUncommitted;return e.jsxs("div",{className:"rounded-lg p-4",style:{backgroundColor:h?"#f2fcf9":"#fef9e7",border:"2px solid",borderColor:h?"#aff1a9":"#f9d689"},children:[e.jsxs("div",{className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[e.jsx("div",{style:{transform:"scale(1.0)",marginTop:"2px"},children:e.jsx(M,{type:x.entityType||"other"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(u,{to:`/entity/${x.sha}`,className:"hover:underline cursor-pointer",style:{fontSize:"14px",lineHeight:"18px",fontWeight:500,color:"#343434"},children:x.name}),e.jsx("div",{className:"px-2 py-0.5 rounded",style:{backgroundColor:h?"#e8ffe6":"#fef3cd",color:h?"#00925d":"#a16207",fontSize:"12px",fontWeight:400},children:h?"Up to date":"Out of date"})]}),e.jsx("div",{style:{fontSize:"12px",lineHeight:"15px",color:"#646464"},children:x.filePath})]})]}),e.jsx("button",{onClick:i,className:"px-3 py-1 rounded transition-colors whitespace-nowrap cursor-pointer",style:{backgroundColor:"#e0e9ec",color:"#005c75",fontSize:"10px",fontWeight:600},children:"View Logs"})]}),m.length>0&&e.jsxs("div",{className:"flex gap-2 overflow-x-auto",children:[m.slice(0,8).map((y,A)=>{if(!y.id)return null;const N=y.metadata?.screenshotPaths?.[0],T=y.metadata?.noScreenshotSaved,s=N&&!T;return e.jsx(u,{to:`/entity/${x.sha}/scenarios/${y.id}`,className:"border border-gray-300 rounded overflow-hidden flex-shrink-0 cursor-pointer",style:{width:"120px",height:"80px"},children:s?e.jsx(W,{screenshotPath:N,cacheBuster:Date.now(),alt:y.name,className:"w-full h-full object-cover bg-gray-100"}):e.jsx("div",{className:"w-full h-full bg-gray-100 flex items-center justify-center text-xs text-gray-400",children:"No preview"})},A)}),m.length>8&&e.jsxs("div",{className:"flex items-center justify-center flex-shrink-0",style:{width:"120px",height:"80px",fontSize:"12px",color:"#646464"},children:["+",m.length-8," more"]})]})]},`${x.sha}-${x.runCreatedAt}`)})})}const ye=R(function(){const t=F(),g=K(),[a,c]=P.useState(!1);U({source:"activity-page"});const i=g.tab||"current";return t?e.jsxs("div",{className:"px-20 py-12",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900 mb-2",children:"Activity"}),e.jsx("p",{className:"text-gray-600",children:"View queued, current, and historical analysis activity."})]}),e.jsx(le,{activeTab:i,hasCurrentActivity:t.hasCurrentActivity,queuedCount:t.queuedCount,historicCount:t.totalHistoricalRuns}),i==="current"&&e.jsx(ne,{currentlyExecuting:t.currentlyExecuting,currentRun:t.currentRun,state:t.state,projectSlug:t.projectSlug,commitSha:t.commitSha,onShowLogs:()=>c(!0),recentCompletedEntities:t.recentCompletedEntities||[],hasMoreCompletedRuns:t.hasMoreCompletedRuns||!1,currentEntityScenarios:t.currentEntityScenarios||[],currentEntityForScenarios:t.currentEntityForScenarios}),i==="queued"&&e.jsx(oe,{queueJobs:t.queueJobs,state:t.state,currentRun:t.currentRun}),i==="historic"&&e.jsx(ae,{historicalRuns:t.historicalRuns,totalHistoricalRuns:t.totalHistoricalRuns,currentPage:t.currentPage,totalPages:t.totalPages,tab:i,onShowLogs:()=>c(!0)}),a&&t.projectSlug&&e.jsx(B,{projectSlug:t.projectSlug,onClose:()=>c(!1)})]}):e.jsx("div",{className:"px-20 py-12",children:e.jsx("div",{className:"text-center",children:e.jsx("p",{className:"text-gray-600",children:"Loading..."})})})});export{ye as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as o}from"./createLucideIcon-YR8jjAlu.js";const n=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],e=o("chevron-down",n);export{e as C};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
function Na(e,t){for(var r=0;r<t.length;r++){const n=t[r];if(typeof n!="string"&&!Array.isArray(n)){for(const a in n)if(a!=="default"&&!(a in e)){const o=Object.getOwnPropertyDescriptor(n,a);o&&Object.defineProperty(e,a,o.get?o:{enumerable:!0,get:()=>n[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function Ia(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ql(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var r=function n(){var a=!1;try{a=this instanceof n}catch{}return a?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}),r}var Gt={exports:{}},at={};var Yr;function Fa(){if(Yr)return at;Yr=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,a,o){var i=null;if(o!==void 0&&(i=""+o),a.key!==void 0&&(i=""+a.key),"key"in a){o={};for(var l in a)l!=="key"&&(o[l]=a[l])}else o=a;return a=o.ref,{$$typeof:e,type:n,key:i,ref:a!==void 0?a:null,props:o}}return at.Fragment=t,at.jsx=r,at.jsxs=r,at}var Vr;function ka(){return Vr||(Vr=1,Gt.exports=Fa()),Gt.exports}var Ql=ka(),Kt={exports:{}},z={};var Jr;function $a(){if(Jr)return z;Jr=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),c=Symbol.for("react.activity"),y=Symbol.iterator;function g(p){return p===null||typeof p!="object"?null:(p=y&&p[y]||p["@@iterator"],typeof p=="function"?p:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},P=Object.assign,R={};function x(p,S,F){this.props=p,this.context=S,this.refs=R,this.updater=F||E}x.prototype.isReactComponent={},x.prototype.setState=function(p,S){if(typeof p!="object"&&typeof p!="function"&&p!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,p,S,"setState")},x.prototype.forceUpdate=function(p){this.updater.enqueueForceUpdate(this,p,"forceUpdate")};function b(){}b.prototype=x.prototype;function T(p,S,F){this.props=p,this.context=S,this.refs=R,this.updater=F||E}var D=T.prototype=new b;D.constructor=T,P(D,x.prototype),D.isPureReactComponent=!0;var M=Array.isArray;function _(){}var m={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function Y(p,S,F){var U=F.ref;return{$$typeof:e,type:p,key:S,ref:U!==void 0?U:null,props:F}}function G(p,S){return Y(p.type,S,p.props)}function H(p){return typeof p=="object"&&p!==null&&p.$$typeof===e}function se(p){var S={"=":"=0",":":"=2"};return"$"+p.replace(/[=:]/g,function(F){return S[F]})}var Z=/\/+/g;function q(p,S){return typeof p=="object"&&p!==null&&p.key!=null?se(""+p.key):S.toString(36)}function ne(p){switch(p.status){case"fulfilled":return p.value;case"rejected":throw p.reason;default:switch(typeof p.status=="string"?p.then(_,_):(p.status="pending",p.then(function(S){p.status==="pending"&&(p.status="fulfilled",p.value=S)},function(S){p.status==="pending"&&(p.status="rejected",p.reason=S)})),p.status){case"fulfilled":return p.value;case"rejected":throw p.reason}}throw p}function te(p,S,F,U,V){var J=typeof p;(J==="undefined"||J==="boolean")&&(p=null);var Q=!1;if(p===null)Q=!0;else switch(J){case"bigint":case"string":case"number":Q=!0;break;case"object":switch(p.$$typeof){case e:case t:Q=!0;break;case h:return Q=p._init,te(Q(p._payload),S,F,U,V)}}if(Q)return V=V(p),Q=U===""?"."+q(p,0):U,M(V)?(F="",Q!=null&&(F=Q.replace(Z,"$&/")+"/"),te(V,S,F,"",function(Bt){return Bt})):V!=null&&(H(V)&&(V=G(V,F+(V.key==null||p&&p.key===V.key?"":(""+V.key).replace(Z,"$&/")+"/")+Q)),S.push(V)),1;Q=0;var he=U===""?".":U+":";if(M(p))for(var me=0;me<p.length;me++)U=p[me],J=he+q(U,me),Q+=te(U,S,F,J,V);else if(me=g(p),typeof me=="function")for(p=me.call(p),me=0;!(U=p.next()).done;)U=U.value,J=he+q(U,me++),Q+=te(U,S,F,J,V);else if(J==="object"){if(typeof p.then=="function")return te(ne(p),S,F,U,V);throw S=String(p),Error("Objects are not valid as a React child (found: "+(S==="[object Object]"?"object with keys {"+Object.keys(p).join(", ")+"}":S)+"). If you meant to render a collection of children, use an array instead.")}return Q}function ue(p,S,F){if(p==null)return p;var U=[],V=0;return te(p,U,"","",function(J){return S.call(F,J,V++)}),U}function ee(p){if(p._status===-1){var S=p._result;S=S(),S.then(function(F){(p._status===0||p._status===-1)&&(p._status=1,p._result=F)},function(F){(p._status===0||p._status===-1)&&(p._status=2,p._result=F)}),p._status===-1&&(p._status=0,p._result=S)}if(p._status===1)return p._result.default;throw p._result}var fe=typeof reportError=="function"?reportError:function(p){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var S=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof p=="object"&&p!==null&&typeof p.message=="string"?String(p.message):String(p),error:p});if(!window.dispatchEvent(S))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",p);return}console.error(p)},be={map:ue,forEach:function(p,S,F){ue(p,function(){S.apply(this,arguments)},F)},count:function(p){var S=0;return ue(p,function(){S++}),S},toArray:function(p){return ue(p,function(S){return S})||[]},only:function(p){if(!H(p))throw Error("React.Children.only expected to receive a single React element child.");return p}};return z.Activity=c,z.Children=be,z.Component=x,z.Fragment=r,z.Profiler=a,z.PureComponent=T,z.StrictMode=n,z.Suspense=s,z.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=m,z.__COMPILER_RUNTIME={__proto__:null,c:function(p){return m.H.useMemoCache(p)}},z.cache=function(p){return function(){return p.apply(null,arguments)}},z.cacheSignal=function(){return null},z.cloneElement=function(p,S,F){if(p==null)throw Error("The argument must be a React element, but you passed "+p+".");var U=P({},p.props),V=p.key;if(S!=null)for(J in S.key!==void 0&&(V=""+S.key),S)!W.call(S,J)||J==="key"||J==="__self"||J==="__source"||J==="ref"&&S.ref===void 0||(U[J]=S[J]);var J=arguments.length-2;if(J===1)U.children=F;else if(1<J){for(var Q=Array(J),he=0;he<J;he++)Q[he]=arguments[he+2];U.children=Q}return Y(p.type,V,U)},z.createContext=function(p){return p={$$typeof:i,_currentValue:p,_currentValue2:p,_threadCount:0,Provider:null,Consumer:null},p.Provider=p,p.Consumer={$$typeof:o,_context:p},p},z.createElement=function(p,S,F){var U,V={},J=null;if(S!=null)for(U in S.key!==void 0&&(J=""+S.key),S)W.call(S,U)&&U!=="key"&&U!=="__self"&&U!=="__source"&&(V[U]=S[U]);var Q=arguments.length-2;if(Q===1)V.children=F;else if(1<Q){for(var he=Array(Q),me=0;me<Q;me++)he[me]=arguments[me+2];V.children=he}if(p&&p.defaultProps)for(U in Q=p.defaultProps,Q)V[U]===void 0&&(V[U]=Q[U]);return Y(p,J,V)},z.createRef=function(){return{current:null}},z.forwardRef=function(p){return{$$typeof:l,render:p}},z.isValidElement=H,z.lazy=function(p){return{$$typeof:h,_payload:{_status:-1,_result:p},_init:ee}},z.memo=function(p,S){return{$$typeof:u,type:p,compare:S===void 0?null:S}},z.startTransition=function(p){var S=m.T,F={};m.T=F;try{var U=p(),V=m.S;V!==null&&V(F,U),typeof U=="object"&&U!==null&&typeof U.then=="function"&&U.then(_,fe)}catch(J){fe(J)}finally{S!==null&&F.types!==null&&(S.types=F.types),m.T=S}},z.unstable_useCacheRefresh=function(){return m.H.useCacheRefresh()},z.use=function(p){return m.H.use(p)},z.useActionState=function(p,S,F){return m.H.useActionState(p,S,F)},z.useCallback=function(p,S){return m.H.useCallback(p,S)},z.useContext=function(p){return m.H.useContext(p)},z.useDebugValue=function(){},z.useDeferredValue=function(p,S){return m.H.useDeferredValue(p,S)},z.useEffect=function(p,S){return m.H.useEffect(p,S)},z.useEffectEvent=function(p){return m.H.useEffectEvent(p)},z.useId=function(){return m.H.useId()},z.useImperativeHandle=function(p,S,F){return m.H.useImperativeHandle(p,S,F)},z.useInsertionEffect=function(p,S){return m.H.useInsertionEffect(p,S)},z.useLayoutEffect=function(p,S){return m.H.useLayoutEffect(p,S)},z.useMemo=function(p,S){return m.H.useMemo(p,S)},z.useOptimistic=function(p,S){return m.H.useOptimistic(p,S)},z.useReducer=function(p,S,F){return m.H.useReducer(p,S,F)},z.useRef=function(p){return m.H.useRef(p)},z.useState=function(p){return m.H.useState(p)},z.useSyncExternalStore=function(p,S,F){return m.H.useSyncExternalStore(p,S,F)},z.useTransition=function(){return m.H.useTransition()},z.version="19.2.3",z}var Gr;function ja(){return Gr||(Gr=1,Kt.exports=$a()),Kt.exports}var f=ja();const Ua=Ia(f),Ha=Na({__proto__:null,default:Ua},[f]);var Pn=e=>{throw TypeError(e)},za=(e,t,r)=>t.has(e)||Pn("Cannot "+r),Xt=(e,t,r)=>(za(e,t,"read from private field"),r?r.call(e):t.get(e)),Ba=(e,t,r)=>t.has(e)?Pn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Kr="popstate";function Zl(e={}){function t(n,a){let{pathname:o,search:i,hash:l}=n.location;return ct("",{pathname:o,search:i,hash:l},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function r(n,a){return typeof a=="string"?a:Me(a)}return Ya(t,r,null,e)}function B(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function ie(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Wa(){return Math.random().toString(36).substring(2,10)}function Xr(e,t){return{usr:e.state,key:e.key,idx:t}}function ct(e,t,r=null,n){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?ke(t):t,state:r,key:t&&t.key||n||Wa()}}function Me({pathname:e="/",search:t="",hash:r=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),r&&r!=="#"&&(e+=r.charAt(0)==="#"?r:"#"+r),e}function ke(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substring(r),e=e.substring(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substring(n),e=e.substring(0,n)),e&&(t.pathname=e)}return t}function Ya(e,t,r,n={}){let{window:a=document.defaultView,v5Compat:o=!1}=n,i=a.history,l="POP",s=null,u=h();u==null&&(u=0,i.replaceState({...i.state,idx:u},""));function h(){return(i.state||{idx:null}).idx}function c(){l="POP";let R=h(),x=R==null?null:R-u;u=R,s&&s({action:l,location:P.location,delta:x})}function y(R,x){l="PUSH";let b=ct(P.location,R,x);u=h()+1;let T=Xr(b,u),D=P.createHref(b);try{i.pushState(T,"",D)}catch(M){if(M instanceof DOMException&&M.name==="DataCloneError")throw M;a.location.assign(D)}o&&s&&s({action:l,location:P.location,delta:1})}function g(R,x){l="REPLACE";let b=ct(P.location,R,x);u=h();let T=Xr(b,u),D=P.createHref(b);i.replaceState(T,"",D),o&&s&&s({action:l,location:P.location,delta:0})}function E(R){return Ln(R)}let P={get action(){return l},get location(){return e(a,i)},listen(R){if(s)throw new Error("A history only accepts one active listener");return a.addEventListener(Kr,c),s=R,()=>{a.removeEventListener(Kr,c),s=null}},createHref(R){return t(a,R)},createURL:E,encodeLocation(R){let x=E(R);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:y,replace:g,go(R){return i.go(R)}};return P}function Ln(e,t=!1){let r="http://localhost";typeof window<"u"&&(r=window.location.origin!=="null"?window.location.origin:window.location.href),B(r,"No window.location.(origin|href) available to create URL");let n=typeof e=="string"?e:Me(e);return n=n.replace(/ $/,"%20"),!t&&n.startsWith("//")&&(n=r+n),new URL(n,r)}var st,qr=class{constructor(e){if(Ba(this,st,new Map),e)for(let[t,r]of e)this.set(t,r)}get(e){if(Xt(this,st).has(e))return Xt(this,st).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw new Error("No value found for context")}set(e,t){Xt(this,st).set(e,t)}};st=new WeakMap;var Va=new Set(["lazy","caseSensitive","path","id","index","children"]);function Ja(e){return Va.has(e)}var Ga=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function Ka(e){return Ga.has(e)}function Xa(e){return e.index===!0}function dt(e,t,r=[],n={},a=!1){return e.map((o,i)=>{let l=[...r,String(i)],s=typeof o.id=="string"?o.id:l.join("-");if(B(o.index!==!0||!o.children,"Cannot specify children on an index route"),B(a||!n[s],`Found a route id collision on id "${s}". Route id's must be globally unique within Data Router usages`),Xa(o)){let u={...o,id:s};return n[s]=Qr(u,t(u)),u}else{let u={...o,id:s,children:void 0};return n[s]=Qr(u,t(u)),o.children&&(u.children=dt(o.children,t,l,n,a)),u}})}function Qr(e,t){return Object.assign(e,{...t,...typeof t.lazy=="object"&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function Ae(e,t,r="/"){return ut(e,t,r,!1)}function ut(e,t,r,n){let a=typeof t=="string"?ke(t):t,o=Ee(a.pathname||"/",r);if(o==null)return null;let i=Tn(e);qa(i);let l=null;for(let s=0;l==null&&s<i.length;++s){let u=lo(o);l=io(i[s],u,n)}return l}function Mn(e,t){let{route:r,pathname:n,params:a}=e;return{id:r.id,pathname:n,params:a,data:t[r.id],loaderData:t[r.id],handle:r.handle}}function Tn(e,t=[],r=[],n="",a=!1){let o=(i,l,s=a,u)=>{let h={relativePath:u===void 0?i.path||"":u,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(h.relativePath.startsWith("/")){if(!h.relativePath.startsWith(n)&&s)return;B(h.relativePath.startsWith(n),`Absolute route path "${h.relativePath}" nested under path "${n}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(n.length)}let c=Le([n,h.relativePath]),y=r.concat(h);i.children&&i.children.length>0&&(B(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${c}".`),Tn(i.children,t,y,c,s)),!(i.path==null&&!i.index)&&t.push({path:c,score:ao(c,i.index),routesMeta:y})};return e.forEach((i,l)=>{if(i.path===""||!i.path?.includes("?"))o(i,l);else for(let s of Dn(i.path))o(i,l,!0,s)}),t}function Dn(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,a=r.endsWith("?"),o=r.replace(/\?$/,"");if(n.length===0)return a?[o,""]:[o];let i=Dn(n.join("/")),l=[];return l.push(...i.map(s=>s===""?o:[o,s].join("/"))),a&&l.push(...i),l.map(s=>e.startsWith("/")&&s===""?"/":s)}function qa(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:oo(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}var Qa=/^:[\w-]+$/,Za=3,eo=2,to=1,ro=10,no=-2,Zr=e=>e==="*";function ao(e,t){let r=e.split("/"),n=r.length;return r.some(Zr)&&(n+=no),t&&(n+=eo),r.filter(a=>!Zr(a)).reduce((a,o)=>a+(Qa.test(o)?Za:o===""?to:ro),n)}function oo(e,t){return e.length===t.length&&e.slice(0,-1).every((n,a)=>n===t[a])?e[e.length-1]-t[t.length-1]:0}function io(e,t,r=!1){let{routesMeta:n}=e,a={},o="/",i=[];for(let l=0;l<n.length;++l){let s=n[l],u=l===n.length-1,h=o==="/"?t:t.slice(o.length)||"/",c=At({path:s.relativePath,caseSensitive:s.caseSensitive,end:u},h),y=s.route;if(!c&&u&&r&&!n[n.length-1].route.index&&(c=At({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},h)),!c)return null;Object.assign(a,c.params),i.push({params:a,pathname:Le([o,c.pathname]),pathnameBase:fo(Le([o,c.pathnameBase])),route:y}),c.pathnameBase!=="/"&&(o=Le([o,c.pathnameBase]))}return i}function At(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[r,n]=_n(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let o=a[0],i=o.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:n.reduce((u,{paramName:h,isOptional:c},y)=>{if(h==="*"){let E=l[y]||"";i=o.slice(0,o.length-E.length).replace(/(.)\/+$/,"$1")}const g=l[y];return c&&!g?u[h]=void 0:u[h]=(g||"").replace(/%2F/g,"/"),u},{}),pathname:o,pathnameBase:i,pattern:e}}function _n(e,t=!1,r=!0){ie(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let n=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,s)=>(n.push({paramName:l,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(n.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),n]}function lo(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ie(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Ee(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}function so({basename:e,pathname:t}){return t==="/"?e:Le([e,t])}var uo=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,kt=e=>uo.test(e);function co(e,t="/"){let{pathname:r,search:n="",hash:a=""}=typeof e=="string"?ke(e):e,o;if(r)if(kt(r))o=r;else{if(r.includes("//")){let i=r;r=r.replace(/\/\/+/g,"/"),ie(!1,`Pathnames cannot have embedded double slashes - normalizing ${i} -> ${r}`)}r.startsWith("/")?o=en(r.substring(1),"/"):o=en(r,t)}else o=t;return{pathname:o,search:ho(n),hash:mo(a)}}function en(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?r.length>1&&r.pop():a!=="."&&r.push(a)}),r.length>1?r.join("/"):"/"}function qt(e,t,r,n){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(n)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function On(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function yr(e){let t=On(e);return t.map((r,n)=>n===t.length-1?r.pathname:r.pathnameBase)}function vr(e,t,r,n=!1){let a;typeof e=="string"?a=ke(e):(a={...e},B(!a.pathname||!a.pathname.includes("?"),qt("?","pathname","search",a)),B(!a.pathname||!a.pathname.includes("#"),qt("#","pathname","hash",a)),B(!a.search||!a.search.includes("#"),qt("#","search","hash",a)));let o=e===""||a.pathname==="",i=o?"/":a.pathname,l;if(i==null)l=r;else{let c=t.length-1;if(!n&&i.startsWith("..")){let y=i.split("/");for(;y[0]==="..";)y.shift(),c-=1;a.pathname=y.join("/")}l=c>=0?t[c]:"/"}let s=co(a,l),u=i&&i!=="/"&&i.endsWith("/"),h=(o||i===".")&&r.endsWith("/");return!s.pathname.endsWith("/")&&(u||h)&&(s.pathname+="/"),s}var Le=e=>e.join("/").replace(/\/\/+/g,"/"),fo=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),ho=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,mo=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,po=class{constructor(e,t){this.type="DataWithResponseInit",this.data=e,this.init=t||null}};function yo(e,t){return new po(e,typeof t=="number"?{status:t}:t)}var vo=(e,t=302)=>{let r=t;typeof r=="number"?r={status:r}:typeof r.status>"u"&&(r.status=302);let n=new Headers(r.headers);return n.set("Location",e),new Response(null,{...r,headers:n})},Ye=class{constructor(e,t,r,n=!1){this.status=e,this.statusText=t||"",this.internal=n,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function We(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function ht(e){return e.map(t=>t.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Fe=Symbol("Uninstrumented");function go(e,t){let r={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(a=>a({id:t.id,index:t.index,path:t.path,instrument(o){let i=Object.keys(r);for(let l of i)o[l]&&r[l].push(o[l])}}));let n={};if(typeof t.lazy=="function"&&r.lazy.length>0){let a=Xe(r.lazy,t.lazy,()=>{});a&&(n.lazy=a)}if(typeof t.lazy=="object"){let a=t.lazy;["middleware","loader","action"].forEach(o=>{let i=a[o],l=r[`lazy.${o}`];if(typeof i=="function"&&l.length>0){let s=Xe(l,i,()=>{});s&&(n.lazy=Object.assign(n.lazy||{},{[o]:s}))}})}return["loader","action"].forEach(a=>{let o=t[a];if(typeof o=="function"&&r[a].length>0){let i=o[Fe]??o,l=Xe(r[a],i,(...s)=>tn(s[0]));l&&(l[Fe]=i,n[a]=l)}}),t.middleware&&t.middleware.length>0&&r.middleware.length>0&&(n.middleware=t.middleware.map(a=>{let o=a[Fe]??a,i=Xe(r.middleware,o,(...l)=>tn(l[0]));return i?(i[Fe]=o,i):a})),n}function wo(e,t){let r={navigate:[],fetch:[]};if(t.forEach(n=>n({instrument(a){let o=Object.keys(a);for(let i of o)a[i]&&r[i].push(a[i])}})),r.navigate.length>0){let n=e.navigate[Fe]??e.navigate,a=Xe(r.navigate,n,(...o)=>{let[i,l]=o;return{to:typeof i=="number"||typeof i=="string"?i:i?Me(i):".",...rn(e,l??{})}});a&&(a[Fe]=n,e.navigate=a)}if(r.fetch.length>0){let n=e.fetch[Fe]??e.fetch,a=Xe(r.fetch,n,(...o)=>{let[i,,l,s]=o;return{href:l??".",fetcherKey:i,...rn(e,s??{})}});a&&(a[Fe]=n,e.fetch=a)}return e}function Xe(e,t,r){return e.length===0?null:async(...n)=>{let a=await An(e,r(...n),()=>t(...n),e.length-1);if(a.type==="error")throw a.value;return a.value}}async function An(e,t,r,n){let a=e[n],o;if(a){let i,l=async()=>(i?console.error("You cannot call instrumented handlers more than once"):i=An(e,t,r,n-1),o=await i,B(o,"Expected a result"),o.type==="error"&&o.value instanceof Error?{status:"error",error:o.value}:{status:"success",error:void 0});try{await a(l,t)}catch(s){console.error("An instrumentation function threw an error:",s)}i||await l(),await i}else try{o={type:"success",value:await r()}}catch(i){o={type:"error",value:i}}return o||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function tn(e){let{request:t,context:r,params:n,unstable_pattern:a}=e;return{request:Eo(t),params:{...n},unstable_pattern:a,context:Ro(r)}}function rn(e,t){return{currentUrl:Me(e.state.location),..."formMethod"in t?{formMethod:t.formMethod}:{},..."formEncType"in t?{formEncType:t.formEncType}:{},..."formData"in t?{formData:t.formData}:{},..."body"in t?{body:t.body}:{}}}function Eo(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function Ro(e){if(So(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var bo=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function So(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join("\0")===bo}var Nn=["POST","PUT","PATCH","DELETE"],xo=new Set(Nn),Co=["GET",...Nn],Po=new Set(Co),Lo=new Set([301,302,303,307,308]),Mo=new Set([307,308]),Qt={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},In={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ot={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},To=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Fn="remix-router-transitions",kn=Symbol("ResetLoaderData");function es(e){const t=e.window?e.window:typeof window<"u"?window:void 0,r=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";B(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let n=e.hydrationRouteProperties||[],a=e.mapRouteProperties||To,o=a;if(e.unstable_instrumentations){let d=e.unstable_instrumentations;o=v=>({...a(v),...go(d.map(w=>w.route).filter(Boolean),v)})}let i={},l=dt(e.routes,o,void 0,i),s,u=e.basename||"/";u.startsWith("/")||(u=`/${u}`);let h=e.dataStrategy||No,c={...e.future},y=null,g=new Set,E=null,P=null,R=null,x=e.hydrationData!=null,b=Ae(l,e.history.location,u),T=!1,D=null,M;if(b==null&&!e.patchRoutesOnNavigation){let d=Se(404,{pathname:e.history.location.pathname}),{matches:v,route:w}=St(l);M=!0,b=v,D={[w.id]:d}}else if(b&&!e.hydrationData&>(b,l,e.history.location.pathname).active&&(b=null),b)if(b.some(d=>d.route.lazy))M=!1;else if(!b.some(d=>gr(d.route)))M=!0;else{let d=e.hydrationData?e.hydrationData.loaderData:null,v=e.hydrationData?e.hydrationData.errors:null;if(v){let w=b.findIndex(C=>v[C.route.id]!==void 0);M=b.slice(0,w+1).every(C=>!or(C.route,d,v))}else M=b.every(w=>!or(w.route,d,v))}else{M=!1,b=[];let d=gt(null,l,e.history.location.pathname);d.active&&d.matches&&(T=!0,b=d.matches)}let _,m={historyAction:e.history.action,location:e.history.location,matches:b,initialized:M,navigation:Qt,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||D,fetchers:new Map,blockers:new Map},W="POP",Y=null,G=!1,H,se=!1,Z=new Map,q=null,ne=!1,te=!1,ue=new Set,ee=new Map,fe=0,be=-1,p=new Map,S=new Set,F=new Map,U=new Map,V=new Set,J=new Map,Q,he=null;function me(){if(y=e.history.listen(({action:d,location:v,delta:w})=>{if(Q){Q(),Q=void 0;return}ie(J.size===0||w!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let C=Ur({currentLocation:m.location,nextLocation:v,historyAction:d});if(C&&w!=null){let L=new Promise(A=>{Q=A});e.history.go(w*-1),vt(C,{state:"blocked",location:v,proceed(){vt(C,{state:"proceeding",proceed:void 0,reset:void 0,location:v}),L.then(()=>e.history.go(w))},reset(){let A=new Map(m.blockers);A.set(C,ot),pe({blockers:A})}}),Y?.resolve(),Y=null;return}return $e(d,v)}),r){Xo(t,Z);let d=()=>qo(t,Z);t.addEventListener("pagehide",d),q=()=>t.removeEventListener("pagehide",d)}return m.initialized||$e("POP",m.location,{initialHydration:!0}),_}function Bt(){y&&y(),q&&q(),g.clear(),H&&H.abort(),m.fetchers.forEach((d,v)=>Yt(v)),m.blockers.forEach((d,v)=>jr(v))}function ga(d){return g.add(d),()=>g.delete(d)}function pe(d,v={}){d.matches&&(d.matches=d.matches.map(L=>{let A=i[L.route.id],N=L.route;return N.element!==A.element||N.errorElement!==A.errorElement||N.hydrateFallbackElement!==A.hydrateFallbackElement?{...L,route:A}:L})),m={...m,...d};let w=[],C=[];m.fetchers.forEach((L,A)=>{L.state==="idle"&&(V.has(A)?w.push(A):C.push(A))}),V.forEach(L=>{!m.fetchers.has(L)&&!ee.has(L)&&w.push(L)}),[...g].forEach(L=>L(m,{deletedFetchers:w,newErrors:d.errors??null,viewTransitionOpts:v.viewTransitionOpts,flushSync:v.flushSync===!0})),w.forEach(L=>Yt(L)),C.forEach(L=>m.fetchers.delete(L))}function Je(d,v,{flushSync:w}={}){let C=m.actionData!=null&&m.navigation.formMethod!=null&&ve(m.navigation.formMethod)&&m.navigation.state==="loading"&&d.state?._isRedirect!==!0,L;v.actionData?Object.keys(v.actionData).length>0?L=v.actionData:L=null:C?L=m.actionData:L=null;let A=v.loaderData?hn(m.loaderData,v.loaderData,v.matches||[],v.errors):m.loaderData,N=m.blockers;N.size>0&&(N=new Map(N),N.forEach((k,$)=>N.set($,ot)));let O=ne?!1:zr(d,v.matches||m.matches),I=G===!0||m.navigation.formMethod!=null&&ve(m.navigation.formMethod)&&d.state?._isRedirect!==!0;s&&(l=s,s=void 0),ne||W==="POP"||(W==="PUSH"?e.history.push(d,d.state):W==="REPLACE"&&e.history.replace(d,d.state));let j;if(W==="POP"){let k=Z.get(m.location.pathname);k&&k.has(d.pathname)?j={currentLocation:m.location,nextLocation:d}:Z.has(d.pathname)&&(j={currentLocation:d,nextLocation:m.location})}else if(se){let k=Z.get(m.location.pathname);k?k.add(d.pathname):(k=new Set([d.pathname]),Z.set(m.location.pathname,k)),j={currentLocation:m.location,nextLocation:d}}pe({...v,actionData:L,loaderData:A,historyAction:W,location:d,initialized:!0,navigation:Qt,revalidation:"idle",restoreScrollPosition:O,preventScrollReset:I,blockers:N},{viewTransitionOpts:j,flushSync:w===!0}),W="POP",G=!1,se=!1,ne=!1,te=!1,Y?.resolve(),Y=null,he?.resolve(),he=null}async function Or(d,v){if(Y?.resolve(),Y=null,typeof d=="number"){Y||(Y=yn());let re=Y.promise;return e.history.go(d),re}let w=ar(m.location,m.matches,u,d,v?.fromRouteId,v?.relative),{path:C,submission:L,error:A}=nn(!1,w,v),N=m.location,O=ct(m.location,C,v&&v.state);O={...O,...e.history.encodeLocation(O)};let I=v&&v.replace!=null?v.replace:void 0,j="PUSH";I===!0?j="REPLACE":I===!1||L!=null&&ve(L.formMethod)&&L.formAction===m.location.pathname+m.location.search&&(j="REPLACE");let k=v&&"preventScrollReset"in v?v.preventScrollReset===!0:void 0,$=(v&&v.flushSync)===!0,K=Ur({currentLocation:N,nextLocation:O,historyAction:j});if(K){vt(K,{state:"blocked",location:O,proceed(){vt(K,{state:"proceeding",proceed:void 0,reset:void 0,location:O}),Or(d,v)},reset(){let re=new Map(m.blockers);re.set(K,ot),pe({blockers:re})}});return}await $e(j,O,{submission:L,pendingError:A,preventScrollReset:k,replace:v&&v.replace,enableViewTransition:v&&v.viewTransition,flushSync:$})}function wa(){he||(he=yn()),Wt(),pe({revalidation:"loading"});let d=he.promise;return m.navigation.state==="submitting"?d:m.navigation.state==="idle"?($e(m.historyAction,m.location,{startUninterruptedRevalidation:!0}),d):($e(W||m.historyAction,m.navigation.location,{overrideNavigation:m.navigation,enableViewTransition:se===!0}),d)}async function $e(d,v,w){H&&H.abort(),H=null,W=d,ne=(w&&w.startUninterruptedRevalidation)===!0,Da(m.location,m.matches),G=(w&&w.preventScrollReset)===!0,se=(w&&w.enableViewTransition)===!0;let C=s||l,L=w&&w.overrideNavigation,A=w?.initialHydration&&m.matches&&m.matches.length>0&&!T?m.matches:Ae(C,v,u),N=(w&&w.flushSync)===!0;if(A&&m.initialized&&!te&&zo(m.location,v)&&!(w&&w.submission&&ve(w.submission.formMethod))){Je(v,{matches:A},{flushSync:N});return}let O=gt(A,C,v.pathname);if(O.active&&O.matches&&(A=O.matches),!A){let{error:de,notFoundMatches:ae,route:oe}=Vt(v.pathname);Je(v,{matches:ae,loaderData:{},errors:{[oe.id]:de}},{flushSync:N});return}H=new AbortController;let I=Ke(e.history,v,H.signal,w&&w.submission),j=e.getContext?await e.getContext():new qr,k;if(w&&w.pendingError)k=[Ie(A).route.id,{type:"error",error:w.pendingError}];else if(w&&w.submission&&ve(w.submission.formMethod)){let de=await Ea(I,v,w.submission,A,j,O.active,w&&w.initialHydration===!0,{replace:w.replace,flushSync:N});if(de.shortCircuited)return;if(de.pendingActionResult){let[ae,oe]=de.pendingActionResult;if(we(oe)&&We(oe.error)&&oe.error.status===404){H=null,Je(v,{matches:de.matches,loaderData:{},errors:{[ae]:oe.error}});return}}A=de.matches||A,k=de.pendingActionResult,L=Zt(v,w.submission),N=!1,O.active=!1,I=Ke(e.history,I.url,I.signal)}let{shortCircuited:$,matches:K,loaderData:re,errors:ce}=await Ra(I,v,A,j,O.active,L,w&&w.submission,w&&w.fetcherSubmission,w&&w.replace,w&&w.initialHydration===!0,N,k);$||(H=null,Je(v,{matches:K||A,...mn(k),loaderData:re,errors:ce}))}async function Ea(d,v,w,C,L,A,N,O={}){Wt();let I=Go(v,w);if(pe({navigation:I},{flushSync:O.flushSync===!0}),A){let $=await wt(C,v.pathname,d.signal);if($.type==="aborted")return{shortCircuited:!0};if($.type==="error"){if($.partialMatches.length===0){let{matches:re,route:ce}=St(l);return{matches:re,pendingActionResult:[ce.id,{type:"error",error:$.error}]}}let K=Ie($.partialMatches).route.id;return{matches:$.partialMatches,pendingActionResult:[K,{type:"error",error:$.error}]}}else if($.matches)C=$.matches;else{let{notFoundMatches:K,error:re,route:ce}=Vt(v.pathname);return{matches:K,pendingActionResult:[ce.id,{type:"error",error:re}]}}}let j,k=Tt(C,v);if(!k.route.action&&!k.route.lazy)j={type:"error",error:Se(405,{method:d.method,pathname:v.pathname,routeId:k.route.id})};else{let $=qe(o,i,d,C,k,N?[]:n,L),K=await tt(d,$,L,null);if(j=K[k.route.id],!j){for(let re of C)if(K[re.route.id]){j=K[re.route.id];break}}if(d.signal.aborted)return{shortCircuited:!0}}if(Be(j)){let $;return O&&O.replace!=null?$=O.replace:$=cn(j.response.headers.get("Location"),new URL(d.url),u)===m.location.pathname+m.location.search,await je(d,j,!0,{submission:w,replace:$}),{shortCircuited:!0}}if(we(j)){let $=Ie(C,k.route.id);return(O&&O.replace)!==!0&&(W="PUSH"),{matches:C,pendingActionResult:[$.route.id,j,k.route.id]}}return{matches:C,pendingActionResult:[k.route.id,j]}}async function Ra(d,v,w,C,L,A,N,O,I,j,k,$){let K=A||Zt(v,N),re=N||O||pn(K),ce=!ne&&!j;if(L){if(ce){let ye=Ar($);pe({navigation:K,...ye!==void 0?{actionData:ye}:{}},{flushSync:k})}let X=await wt(w,v.pathname,d.signal);if(X.type==="aborted")return{shortCircuited:!0};if(X.type==="error"){if(X.partialMatches.length===0){let{matches:Ge,route:ze}=St(l);return{matches:Ge,loaderData:{},errors:{[ze.id]:X.error}}}let ye=Ie(X.partialMatches).route.id;return{matches:X.partialMatches,loaderData:{},errors:{[ye]:X.error}}}else if(X.matches)w=X.matches;else{let{error:ye,notFoundMatches:Ge,route:ze}=Vt(v.pathname);return{matches:Ge,loaderData:{},errors:{[ze.id]:ye}}}}let de=s||l,{dsMatches:ae,revalidatingFetchers:oe}=an(d,C,o,i,e.history,m,w,re,v,j?[]:n,j===!0,te,ue,V,F,S,de,u,e.patchRoutesOnNavigation!=null,$);if(be=++fe,!e.dataStrategy&&!ae.some(X=>X.shouldLoad)&&!ae.some(X=>X.route.middleware&&X.route.middleware.length>0)&&oe.length===0){let X=kr();return Je(v,{matches:w,loaderData:{},errors:$&&we($[1])?{[$[0]]:$[1].error}:null,...mn($),...X?{fetchers:new Map(m.fetchers)}:{}},{flushSync:k}),{shortCircuited:!0}}if(ce){let X={};if(!L){X.navigation=K;let ye=Ar($);ye!==void 0&&(X.actionData=ye)}oe.length>0&&(X.fetchers=ba(oe)),pe(X,{flushSync:k})}oe.forEach(X=>{_e(X.key),X.controller&&ee.set(X.key,X.controller)});let Ue=()=>oe.forEach(X=>_e(X.key));H&&H.signal.addEventListener("abort",Ue);let{loaderResults:rt,fetcherResults:Ne}=await Nr(ae,oe,d,C);if(d.signal.aborted)return{shortCircuited:!0};H&&H.signal.removeEventListener("abort",Ue),oe.forEach(X=>ee.delete(X.key));let Pe=xt(rt);if(Pe)return await je(d,Pe.result,!0,{replace:I}),{shortCircuited:!0};if(Pe=xt(Ne),Pe)return S.add(Pe.key),await je(d,Pe.result,!0,{replace:I}),{shortCircuited:!0};let{loaderData:Jt,errors:nt}=fn(m,w,rt,$,oe,Ne);j&&m.errors&&(nt={...m.errors,...nt});let He=kr(),Et=$r(be),Rt=He||Et||oe.length>0;return{matches:w,loaderData:Jt,errors:nt,...Rt?{fetchers:new Map(m.fetchers)}:{}}}function Ar(d){if(d&&!we(d[1]))return{[d[0]]:d[1].data};if(m.actionData)return Object.keys(m.actionData).length===0?null:m.actionData}function ba(d){return d.forEach(v=>{let w=m.fetchers.get(v.key),C=it(void 0,w?w.data:void 0);m.fetchers.set(v.key,C)}),new Map(m.fetchers)}async function Sa(d,v,w,C){_e(d);let L=(C&&C.flushSync)===!0,A=s||l,N=ar(m.location,m.matches,u,w,v,C?.relative),O=Ae(A,N,u),I=gt(O,A,N);if(I.active&&I.matches&&(O=I.matches),!O){De(d,v,Se(404,{pathname:N}),{flushSync:L});return}let{path:j,submission:k,error:$}=nn(!0,N,C);if($){De(d,v,$,{flushSync:L});return}let K=e.getContext?await e.getContext():new qr,re=(C&&C.preventScrollReset)===!0;if(k&&ve(k.formMethod)){await xa(d,v,j,O,K,I.active,L,re,k);return}F.set(d,{routeId:v,path:j}),await Ca(d,v,j,O,K,I.active,L,re,k)}async function xa(d,v,w,C,L,A,N,O,I){Wt(),F.delete(d);let j=m.fetchers.get(d);Te(d,Ko(I,j),{flushSync:N});let k=new AbortController,$=Ke(e.history,w,k.signal,I);if(A){let le=await wt(C,new URL($.url).pathname,$.signal,d);if(le.type==="aborted")return;if(le.type==="error"){De(d,v,le.error,{flushSync:N});return}else if(le.matches)C=le.matches;else{De(d,v,Se(404,{pathname:w}),{flushSync:N});return}}let K=Tt(C,w);if(!K.route.action&&!K.route.lazy){let le=Se(405,{method:I.formMethod,pathname:w,routeId:v});De(d,v,le,{flushSync:N});return}ee.set(d,k);let re=fe,ce=qe(o,i,$,C,K,n,L),de=await tt($,ce,L,d),ae=de[K.route.id];if(!ae){for(let le of ce)if(de[le.route.id]){ae=de[le.route.id];break}}if($.signal.aborted){ee.get(d)===k&&ee.delete(d);return}if(V.has(d)){if(Be(ae)||we(ae)){Te(d,Oe(void 0));return}}else{if(Be(ae))if(ee.delete(d),be>re){Te(d,Oe(void 0));return}else return S.add(d),Te(d,it(I)),je($,ae,!1,{fetcherSubmission:I,preventScrollReset:O});if(we(ae)){De(d,v,ae.error);return}}let oe=m.navigation.location||m.location,Ue=Ke(e.history,oe,k.signal),rt=s||l,Ne=m.navigation.state!=="idle"?Ae(rt,m.navigation.location,u):m.matches;B(Ne,"Didn't find any matches after fetcher action");let Pe=++fe;p.set(d,Pe);let Jt=it(I,ae.data);m.fetchers.set(d,Jt);let{dsMatches:nt,revalidatingFetchers:He}=an(Ue,L,o,i,e.history,m,Ne,I,oe,n,!1,te,ue,V,F,S,rt,u,e.patchRoutesOnNavigation!=null,[K.route.id,ae]);He.filter(le=>le.key!==d).forEach(le=>{let bt=le.key,Wr=m.fetchers.get(bt),Aa=it(void 0,Wr?Wr.data:void 0);m.fetchers.set(bt,Aa),_e(bt),le.controller&&ee.set(bt,le.controller)}),pe({fetchers:new Map(m.fetchers)});let Et=()=>He.forEach(le=>_e(le.key));k.signal.addEventListener("abort",Et);let{loaderResults:Rt,fetcherResults:X}=await Nr(nt,He,Ue,L);if(k.signal.aborted)return;if(k.signal.removeEventListener("abort",Et),p.delete(d),ee.delete(d),He.forEach(le=>ee.delete(le.key)),m.fetchers.has(d)){let le=Oe(ae.data);m.fetchers.set(d,le)}let ye=xt(Rt);if(ye)return je(Ue,ye.result,!1,{preventScrollReset:O});if(ye=xt(X),ye)return S.add(ye.key),je(Ue,ye.result,!1,{preventScrollReset:O});let{loaderData:Ge,errors:ze}=fn(m,Ne,Rt,void 0,He,X);$r(Pe),m.navigation.state==="loading"&&Pe>be?(B(W,"Expected pending action"),H&&H.abort(),Je(m.navigation.location,{matches:Ne,loaderData:Ge,errors:ze,fetchers:new Map(m.fetchers)})):(pe({errors:ze,loaderData:hn(m.loaderData,Ge,Ne,ze),fetchers:new Map(m.fetchers)}),te=!1)}async function Ca(d,v,w,C,L,A,N,O,I){let j=m.fetchers.get(d);Te(d,it(I,j?j.data:void 0),{flushSync:N});let k=new AbortController,$=Ke(e.history,w,k.signal);if(A){let oe=await wt(C,new URL($.url).pathname,$.signal,d);if(oe.type==="aborted")return;if(oe.type==="error"){De(d,v,oe.error,{flushSync:N});return}else if(oe.matches)C=oe.matches;else{De(d,v,Se(404,{pathname:w}),{flushSync:N});return}}let K=Tt(C,w);ee.set(d,k);let re=fe,ce=qe(o,i,$,C,K,n,L),ae=(await tt($,ce,L,d))[K.route.id];if(ee.get(d)===k&&ee.delete(d),!$.signal.aborted){if(V.has(d)){Te(d,Oe(void 0));return}if(Be(ae))if(be>re){Te(d,Oe(void 0));return}else{S.add(d),await je($,ae,!1,{preventScrollReset:O});return}if(we(ae)){De(d,v,ae.error);return}Te(d,Oe(ae.data))}}async function je(d,v,w,{submission:C,fetcherSubmission:L,preventScrollReset:A,replace:N}={}){w||(Y?.resolve(),Y=null),v.response.headers.has("X-Remix-Revalidate")&&(te=!0);let O=v.response.headers.get("Location");B(O,"Expected a Location header on the redirect Response"),O=cn(O,new URL(d.url),u);let I=ct(m.location,O,{_isRedirect:!0});if(r){let ce=!1;if(v.response.headers.has("X-Remix-Reload-Document"))ce=!0;else if(kt(O)){const de=Ln(O,!0);ce=de.origin!==t.location.origin||Ee(de.pathname,u)==null}if(ce){N?t.location.replace(O):t.location.assign(O);return}}H=null;let j=N===!0||v.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:k,formAction:$,formEncType:K}=m.navigation;!C&&!L&&k&&$&&K&&(C=pn(m.navigation));let re=C||L;if(Mo.has(v.response.status)&&re&&ve(re.formMethod))await $e(j,I,{submission:{...re,formAction:O},preventScrollReset:A||G,enableViewTransition:w?se:void 0});else{let ce=Zt(I,C);await $e(j,I,{overrideNavigation:ce,fetcherSubmission:L,preventScrollReset:A||G,enableViewTransition:w?se:void 0})}}async function tt(d,v,w,C){let L,A={};try{L=await Fo(h,d,v,C,w,!1)}catch(N){return v.filter(O=>O.shouldLoad).forEach(O=>{A[O.route.id]={type:"error",error:N}}),A}if(d.signal.aborted)return A;for(let[N,O]of Object.entries(L))if(Vo(O)){let I=O.result;A[N]={type:"redirect",response:Uo(I,d,N,v,u)}}else A[N]=await jo(O);return A}async function Nr(d,v,w,C){let L=tt(w,d,C,null),A=Promise.all(v.map(async I=>{if(I.matches&&I.match&&I.request&&I.controller){let k=(await tt(I.request,I.matches,C,I.key))[I.match.route.id];return{[I.key]:k}}else return Promise.resolve({[I.key]:{type:"error",error:Se(404,{pathname:I.path})}})})),N=await L,O=(await A).reduce((I,j)=>Object.assign(I,j),{});return{loaderResults:N,fetcherResults:O}}function Wt(){te=!0,F.forEach((d,v)=>{ee.has(v)&&ue.add(v),_e(v)})}function Te(d,v,w={}){m.fetchers.set(d,v),pe({fetchers:new Map(m.fetchers)},{flushSync:(w&&w.flushSync)===!0})}function De(d,v,w,C={}){let L=Ie(m.matches,v);Yt(d),pe({errors:{[L.route.id]:w},fetchers:new Map(m.fetchers)},{flushSync:(C&&C.flushSync)===!0})}function Ir(d){return U.set(d,(U.get(d)||0)+1),V.has(d)&&V.delete(d),m.fetchers.get(d)||In}function Pa(d,v){_e(d,v?.reason),Te(d,Oe(null))}function Yt(d){let v=m.fetchers.get(d);ee.has(d)&&!(v&&v.state==="loading"&&p.has(d))&&_e(d),F.delete(d),p.delete(d),S.delete(d),V.delete(d),ue.delete(d),m.fetchers.delete(d)}function La(d){let v=(U.get(d)||0)-1;v<=0?(U.delete(d),V.add(d)):U.set(d,v),pe({fetchers:new Map(m.fetchers)})}function _e(d,v){let w=ee.get(d);w&&(w.abort(v),ee.delete(d))}function Fr(d){for(let v of d){let w=Ir(v),C=Oe(w.data);m.fetchers.set(v,C)}}function kr(){let d=[],v=!1;for(let w of S){let C=m.fetchers.get(w);B(C,`Expected fetcher: ${w}`),C.state==="loading"&&(S.delete(w),d.push(w),v=!0)}return Fr(d),v}function $r(d){let v=[];for(let[w,C]of p)if(C<d){let L=m.fetchers.get(w);B(L,`Expected fetcher: ${w}`),L.state==="loading"&&(_e(w),p.delete(w),v.push(w))}return Fr(v),v.length>0}function Ma(d,v){let w=m.blockers.get(d)||ot;return J.get(d)!==v&&J.set(d,v),w}function jr(d){m.blockers.delete(d),J.delete(d)}function vt(d,v){let w=m.blockers.get(d)||ot;B(w.state==="unblocked"&&v.state==="blocked"||w.state==="blocked"&&v.state==="blocked"||w.state==="blocked"&&v.state==="proceeding"||w.state==="blocked"&&v.state==="unblocked"||w.state==="proceeding"&&v.state==="unblocked",`Invalid blocker state transition: ${w.state} -> ${v.state}`);let C=new Map(m.blockers);C.set(d,v),pe({blockers:C})}function Ur({currentLocation:d,nextLocation:v,historyAction:w}){if(J.size===0)return;J.size>1&&ie(!1,"A router only supports one blocker at a time");let C=Array.from(J.entries()),[L,A]=C[C.length-1],N=m.blockers.get(L);if(!(N&&N.state==="proceeding")&&A({currentLocation:d,nextLocation:v,historyAction:w}))return L}function Vt(d){let v=Se(404,{pathname:d}),w=s||l,{matches:C,route:L}=St(w);return{notFoundMatches:C,route:L,error:v}}function Ta(d,v,w){if(E=d,R=v,P=w||null,!x&&m.navigation===Qt){x=!0;let C=zr(m.location,m.matches);C!=null&&pe({restoreScrollPosition:C})}return()=>{E=null,R=null,P=null}}function Hr(d,v){return P&&P(d,v.map(C=>Mn(C,m.loaderData)))||d.key}function Da(d,v){if(E&&R){let w=Hr(d,v);E[w]=R()}}function zr(d,v){if(E){let w=Hr(d,v),C=E[w];if(typeof C=="number")return C}return null}function gt(d,v,w){if(e.patchRoutesOnNavigation)if(d){if(Object.keys(d[0].params).length>0)return{active:!0,matches:ut(v,w,u,!0)}}else return{active:!0,matches:ut(v,w,u,!0)||[]};return{active:!1,matches:null}}async function wt(d,v,w,C){if(!e.patchRoutesOnNavigation)return{type:"success",matches:d};let L=d;for(;;){let A=s==null,N=s||l,O=i;try{await e.patchRoutesOnNavigation({signal:w,path:v,matches:L,fetcherKey:C,patch:(k,$)=>{w.aborted||on(k,$,N,O,o,!1)}})}catch(k){return{type:"error",error:k,partialMatches:L}}finally{A&&!w.aborted&&(l=[...l])}if(w.aborted)return{type:"aborted"};let I=Ae(N,v,u),j=null;if(I){if(Object.keys(I[0].params).length===0)return{type:"success",matches:I};if(j=ut(N,v,u,!0),!(j&&L.length<j.length&&Br(L,j.slice(0,L.length))))return{type:"success",matches:I}}if(j||(j=ut(N,v,u,!0)),!j||Br(L,j))return{type:"success",matches:null};L=j}}function Br(d,v){return d.length===v.length&&d.every((w,C)=>w.route.id===v[C].route.id)}function _a(d){i={},s=dt(d,o,void 0,i)}function Oa(d,v,w=!1){let C=s==null;on(d,v,s||l,i,o,w),C&&(l=[...l],pe({}))}return _={get basename(){return u},get future(){return c},get state(){return m},get routes(){return l},get window(){return t},initialize:me,subscribe:ga,enableScrollRestoration:Ta,navigate:Or,fetch:Sa,revalidate:wa,createHref:d=>e.history.createHref(d),encodeLocation:d=>e.history.encodeLocation(d),getFetcher:Ir,resetFetcher:Pa,deleteFetcher:La,dispose:Bt,getBlocker:Ma,deleteBlocker:jr,patchRoutes:Oa,_internalFetchControllers:ee,_internalSetRoutes:_a,_internalSetStateDoNotUseOrYouWillBreakYourApp(d){pe(d)}},e.unstable_instrumentations&&(_=wo(_,e.unstable_instrumentations.map(d=>d.router).filter(Boolean))),_}function Do(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function ar(e,t,r,n,a,o){let i,l;if(a){i=[];for(let u of t)if(i.push(u),u.route.id===a){l=u;break}}else i=t,l=t[t.length-1];let s=vr(n||".",yr(i),Ee(e.pathname,r)||e.pathname,o==="path");if(n==null&&(s.search=e.search,s.hash=e.hash),(n==null||n===""||n===".")&&l){let u=Er(s.search);if(l.route.index&&!u)s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index";else if(!l.route.index&&u){let h=new URLSearchParams(s.search),c=h.getAll("index");h.delete("index"),c.filter(g=>g).forEach(g=>h.append("index",g));let y=h.toString();s.search=y?`?${y}`:""}}return r!=="/"&&(s.pathname=so({basename:r,pathname:s.pathname})),Me(s)}function nn(e,t,r){if(!r||!Do(r))return{path:t};if(r.formMethod&&!Jo(r.formMethod))return{path:t,error:Se(405,{method:r.formMethod})};let n=()=>({path:t,error:Se(400,{type:"invalid-body"})}),o=(r.formMethod||"get").toUpperCase(),i=Bn(t);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!ve(o))return n();let c=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((y,[g,E])=>`${y}${g}=${E}
|
|
2
|
-
`,""):String(r.body);return{path:t,submission:{formMethod:o,formAction:i,formEncType:r.formEncType,formData:void 0,json:void 0,text:c}}}else if(r.formEncType==="application/json"){if(!ve(o))return n();try{let c=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:t,submission:{formMethod:o,formAction:i,formEncType:r.formEncType,formData:void 0,json:c,text:void 0}}}catch{return n()}}}B(typeof FormData=="function","FormData is not available in this environment");let l,s;if(r.formData)l=lr(r.formData),s=r.formData;else if(r.body instanceof FormData)l=lr(r.body),s=r.body;else if(r.body instanceof URLSearchParams)l=r.body,s=dn(l);else if(r.body==null)l=new URLSearchParams,s=new FormData;else try{l=new URLSearchParams(r.body),s=dn(l)}catch{return n()}let u={formMethod:o,formAction:i,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:s,json:void 0,text:void 0};if(ve(u.formMethod))return{path:t,submission:u};let h=ke(t);return e&&h.search&&Er(h.search)&&l.append("index",""),h.search=`?${l}`,{path:Me(h),submission:u}}function an(e,t,r,n,a,o,i,l,s,u,h,c,y,g,E,P,R,x,b,T){let D=T?we(T[1])?T[1].error:T[1].data:void 0,M=a.createURL(o.location),_=a.createURL(s),m;if(h&&o.errors){let q=Object.keys(o.errors)[0];m=i.findIndex(ne=>ne.route.id===q)}else if(T&&we(T[1])){let q=T[0];m=i.findIndex(ne=>ne.route.id===q)-1}let W=T?T[1].statusCode:void 0,Y=W&&W>=400,G={currentUrl:M,currentParams:o.matches[0]?.params||{},nextUrl:_,nextParams:i[0].params,...l,actionResult:D,actionStatus:W},H=ht(i),se=i.map((q,ne)=>{let{route:te}=q,ue=null;if(m!=null&&ne>m?ue=!1:te.lazy?ue=!0:gr(te)?h?ue=or(te,o.loaderData,o.errors):_o(o.loaderData,o.matches[ne],q)&&(ue=!0):ue=!1,ue!==null)return ir(r,n,e,H,q,u,t,ue);let ee=Y?!1:c||M.pathname+M.search===_.pathname+_.search||M.search!==_.search||Oo(o.matches[ne],q),fe={...G,defaultShouldRevalidate:ee},be=Nt(q,fe);return ir(r,n,e,H,q,u,t,be,fe)}),Z=[];return E.forEach((q,ne)=>{if(h||!i.some(F=>F.route.id===q.routeId)||g.has(ne))return;let te=o.fetchers.get(ne),ue=te&&te.state!=="idle"&&te.data===void 0,ee=Ae(R,q.path,x);if(!ee){if(b&&ue)return;Z.push({key:ne,routeId:q.routeId,path:q.path,matches:null,match:null,request:null,controller:null});return}if(P.has(ne))return;let fe=Tt(ee,q.path),be=new AbortController,p=Ke(a,q.path,be.signal),S=null;if(y.has(ne))y.delete(ne),S=qe(r,n,p,ee,fe,u,t);else if(ue)c&&(S=qe(r,n,p,ee,fe,u,t));else{let F={...G,defaultShouldRevalidate:Y?!1:c};Nt(fe,F)&&(S=qe(r,n,p,ee,fe,u,t,F))}S&&Z.push({key:ne,routeId:q.routeId,path:q.path,matches:S,match:fe,request:p,controller:be})}),{dsMatches:se,revalidatingFetchers:Z}}function gr(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function or(e,t,r){if(e.lazy)return!0;if(!gr(e))return!1;let n=t!=null&&e.id in t,a=r!=null&&r[e.id]!==void 0;return!n&&a?!1:typeof e.loader=="function"&&e.loader.hydrate===!0?!0:!n&&!a}function _o(e,t,r){let n=!t||r.route.id!==t.route.id,a=!e.hasOwnProperty(r.route.id);return n||a}function Oo(e,t){let r=e.route.path;return e.pathname!==t.pathname||r!=null&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function Nt(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if(typeof r=="boolean")return r}return t.defaultShouldRevalidate}function on(e,t,r,n,a,o){let i;if(e){let u=n[e];B(u,`No route found to patch children into: routeId = ${e}`),u.children||(u.children=[]),i=u.children}else i=r;let l=[],s=[];if(t.forEach(u=>{let h=i.find(c=>$n(u,c));h?s.push({existingRoute:h,newRoute:u}):l.push(u)}),l.length>0){let u=dt(l,a,[e||"_","patch",String(i?.length||"0")],n);i.push(...u)}if(o&&s.length>0)for(let u=0;u<s.length;u++){let{existingRoute:h,newRoute:c}=s[u],y=h,[g]=dt([c],a,[],{},!0);Object.assign(y,{element:g.element?g.element:y.element,errorElement:g.errorElement?g.errorElement:y.errorElement,hydrateFallbackElement:g.hydrateFallbackElement?g.hydrateFallbackElement:y.hydrateFallbackElement})}}function $n(e,t){return"id"in e&&"id"in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children.every((r,n)=>t.children?.some(a=>$n(r,a))):!1}var ln=new WeakMap,jn=({key:e,route:t,manifest:r,mapRouteProperties:n})=>{let a=r[t.id];if(B(a,"No route found in manifest"),!a.lazy||typeof a.lazy!="object")return;let o=a.lazy[e];if(!o)return;let i=ln.get(a);i||(i={},ln.set(a,i));let l=i[e];if(l)return l;let s=(async()=>{let u=Ja(e),c=a[e]!==void 0&&e!=="hasErrorBoundary";if(u)ie(!u,"Route property "+e+" is not a supported lazy route property. This property will be ignored."),i[e]=Promise.resolve();else if(c)ie(!1,`Route "${a.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let y=await o();y!=null&&(Object.assign(a,{[e]:y}),Object.assign(a,n(a)))}typeof a.lazy=="object"&&(a.lazy[e]=void 0,Object.values(a.lazy).every(y=>y===void 0)&&(a.lazy=void 0))})();return i[e]=s,s},sn=new WeakMap;function Ao(e,t,r,n,a){let o=r[e.id];if(B(o,"No route found in manifest"),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy=="function"){let h=sn.get(o);if(h)return{lazyRoutePromise:h,lazyHandlerPromise:h};let c=(async()=>{B(typeof e.lazy=="function","No lazy route function found");let y=await e.lazy(),g={};for(let E in y){let P=y[E];if(P===void 0)continue;let R=Ka(E),b=o[E]!==void 0&&E!=="hasErrorBoundary";R?ie(!R,"Route property "+E+" is not a supported property to be returned from a lazy route function. This property will be ignored."):b?ie(!b,`Route "${o.id}" has a static property "${E}" defined but its lazy function is also returning a value for this property. The lazy route property "${E}" will be ignored.`):g[E]=P}Object.assign(o,g),Object.assign(o,{...n(o),lazy:void 0})})();return sn.set(o,c),c.catch(()=>{}),{lazyRoutePromise:c,lazyHandlerPromise:c}}let i=Object.keys(e.lazy),l=[],s;for(let h of i){if(a&&a.includes(h))continue;let c=jn({key:h,route:e,manifest:r,mapRouteProperties:n});c&&(l.push(c),h===t&&(s=c))}let u=l.length>0?Promise.all(l).then(()=>{}):void 0;return u?.catch(()=>{}),s?.catch(()=>{}),{lazyRoutePromise:u,lazyHandlerPromise:s}}async function un(e){let t=e.matches.filter(a=>a.shouldLoad),r={};return(await Promise.all(t.map(a=>a.resolve()))).forEach((a,o)=>{r[t[o].route.id]=a}),r}async function No(e){return e.matches.some(t=>t.route.middleware)?Un(e,()=>un(e)):un(e)}function Un(e,t){return Io(e,t,n=>n,Wo,r);function r(n,a,o){if(o)return Promise.resolve(Object.assign(o.value,{[a]:{type:"error",result:n}}));{let{matches:i}=e,l=Math.min(Math.max(i.findIndex(u=>u.route.id===a),0),Math.max(i.findIndex(u=>u.shouldCallHandler()),0)),s=Ie(i,i[l].route.id).route.id;return Promise.resolve({[s]:{type:"error",result:n}})}}}async function Io(e,t,r,n,a){let{matches:o,request:i,params:l,context:s,unstable_pattern:u}=e,h=o.flatMap(y=>y.route.middleware?y.route.middleware.map(g=>[y.route.id,g]):[]);return await Hn({request:i,params:l,context:s,unstable_pattern:u},h,t,r,n,a)}async function Hn(e,t,r,n,a,o,i=0){let{request:l}=e;if(l.signal.aborted)throw l.signal.reason??new Error(`Request aborted: ${l.method} ${l.url}`);let s=t[i];if(!s)return await r();let[u,h]=s,c,y=async()=>{if(c)throw new Error("You may only call `next()` once per middleware");try{return c={value:await Hn(e,t,r,n,a,o,i+1)},c.value}catch(g){return c={value:await o(g,u,c)},c.value}};try{let g=await h(e,y),E=g!=null?n(g):void 0;return a(E)?E:c?E??c.value:(c={value:await y()},c.value)}catch(g){return await o(g,u,c)}}function zn(e,t,r,n,a){let o=jn({key:"middleware",route:n.route,manifest:t,mapRouteProperties:e}),i=Ao(n.route,ve(r.method)?"action":"loader",t,e,a);return{middleware:o,route:i.lazyRoutePromise,handler:i.lazyHandlerPromise}}function ir(e,t,r,n,a,o,i,l,s=null){let u=!1,h=zn(e,t,r,a,o);return{...a,_lazyPromises:h,shouldLoad:l,shouldRevalidateArgs:s,shouldCallHandler(c){return u=!0,s?typeof c=="boolean"?Nt(a,{...s,defaultShouldRevalidate:c}):Nt(a,s):l},resolve(c){let{lazy:y,loader:g,middleware:E}=a.route,P=u||l||c&&!ve(r.method)&&(y||g),R=E&&E.length>0&&!g&&!y;return P&&(ve(r.method)||!R)?ko({request:r,unstable_pattern:n,match:a,lazyHandlerPromise:h?.handler,lazyRoutePromise:h?.route,handlerOverride:c,scopedContext:i}):Promise.resolve({type:"data",result:void 0})}}}function qe(e,t,r,n,a,o,i,l=null){return n.map(s=>s.route.id!==a.route.id?{...s,shouldLoad:!1,shouldRevalidateArgs:l,shouldCallHandler:()=>!1,_lazyPromises:zn(e,t,r,s,o),resolve:()=>Promise.resolve({type:"data",result:void 0})}:ir(e,t,r,ht(n),s,o,i,!0,l))}async function Fo(e,t,r,n,a,o){r.some(u=>u._lazyPromises?.middleware)&&await Promise.all(r.map(u=>u._lazyPromises?.middleware));let i={request:t,unstable_pattern:ht(r),params:r[0].params,context:a,matches:r},s=await e({...i,fetcherKey:n,runClientMiddleware:u=>{let h=i;return Un(h,()=>u({...h,fetcherKey:n,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(r.flatMap(u=>[u._lazyPromises?.handler,u._lazyPromises?.route]))}catch{}return s}async function ko({request:e,unstable_pattern:t,match:r,lazyHandlerPromise:n,lazyRoutePromise:a,handlerOverride:o,scopedContext:i}){let l,s,u=ve(e.method),h=u?"action":"loader",c=y=>{let g,E=new Promise((x,b)=>g=b);s=()=>g(),e.signal.addEventListener("abort",s);let P=x=>typeof y!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${h}" [routeId: ${r.route.id}]`)):y({request:e,unstable_pattern:t,params:r.params,context:i},...x!==void 0?[x]:[]),R=(async()=>{try{return{type:"data",result:await(o?o(b=>P(b)):P())}}catch(x){return{type:"error",result:x}}})();return Promise.race([R,E])};try{let y=u?r.route.action:r.route.loader;if(n||a)if(y){let g,[E]=await Promise.all([c(y).catch(P=>{g=P}),n,a]);if(g!==void 0)throw g;l=E}else{await n;let g=u?r.route.action:r.route.loader;if(g)[l]=await Promise.all([c(g),a]);else if(h==="action"){let E=new URL(e.url),P=E.pathname+E.search;throw Se(405,{method:e.method,pathname:P,routeId:r.route.id})}else return{type:"data",result:void 0}}else if(y)l=await c(y);else{let g=new URL(e.url),E=g.pathname+g.search;throw Se(404,{pathname:E})}}catch(y){return{type:"error",result:y}}finally{s&&e.signal.removeEventListener("abort",s)}return l}async function $o(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function jo(e){let{result:t,type:r}=e;if(wr(t)){let n;try{n=await $o(t)}catch(a){return{type:"error",error:a}}return r==="error"?{type:"error",error:new Ye(t.status,t.statusText,n),statusCode:t.status,headers:t.headers}:{type:"data",data:n,statusCode:t.status,headers:t.headers}}return r==="error"?sr(t)?t.data instanceof Error?{type:"error",error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:Bo(t),statusCode:We(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:t,statusCode:We(t)?t.status:void 0}:sr(t)?{type:"data",data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"data",data:t}}function Uo(e,t,r,n,a){let o=e.headers.get("Location");if(B(o,"Redirects returned/thrown from loaders/actions must have a Location header"),!kt(o)){let i=n.slice(0,n.findIndex(l=>l.route.id===r)+1);o=ar(new URL(t.url),i,a,o),e.headers.set("Location",o)}return e}function cn(e,t,r){if(kt(e)){let n=e,a=n.startsWith("//")?new URL(t.protocol+n):new URL(n),o=Ee(a.pathname,r)!=null;if(a.origin===t.origin&&o)return a.pathname+a.search+a.hash}return e}function Ke(e,t,r,n){let a=e.createURL(Bn(t)).toString(),o={signal:r};if(n&&ve(n.formMethod)){let{formMethod:i,formEncType:l}=n;o.method=i.toUpperCase(),l==="application/json"?(o.headers=new Headers({"Content-Type":l}),o.body=JSON.stringify(n.json)):l==="text/plain"?o.body=n.text:l==="application/x-www-form-urlencoded"&&n.formData?o.body=lr(n.formData):o.body=n.formData}return new Request(a,o)}function lr(e){let t=new URLSearchParams;for(let[r,n]of e.entries())t.append(r,typeof n=="string"?n:n.name);return t}function dn(e){let t=new FormData;for(let[r,n]of e.entries())t.append(r,n);return t}function Ho(e,t,r,n=!1,a=!1){let o={},i=null,l,s=!1,u={},h=r&&we(r[1])?r[1].error:void 0;return e.forEach(c=>{if(!(c.route.id in t))return;let y=c.route.id,g=t[y];if(B(!Be(g),"Cannot handle redirect results in processLoaderData"),we(g)){let E=g.error;if(h!==void 0&&(E=h,h=void 0),i=i||{},a)i[y]=E;else{let P=Ie(e,y);i[P.route.id]==null&&(i[P.route.id]=E)}n||(o[y]=kn),s||(s=!0,l=We(g.error)?g.error.status:500),g.headers&&(u[y]=g.headers)}else o[y]=g.data,g.statusCode&&g.statusCode!==200&&!s&&(l=g.statusCode),g.headers&&(u[y]=g.headers)}),h!==void 0&&r&&(i={[r[0]]:h},r[2]&&(o[r[2]]=void 0)),{loaderData:o,errors:i,statusCode:l||200,loaderHeaders:u}}function fn(e,t,r,n,a,o){let{loaderData:i,errors:l}=Ho(t,r,n);return a.filter(s=>!s.matches||s.matches.some(u=>u.shouldLoad)).forEach(s=>{let{key:u,match:h,controller:c}=s;if(c&&c.signal.aborted)return;let y=o[u];if(B(y,"Did not find corresponding fetcher result"),we(y)){let g=Ie(e.matches,h?.route.id);l&&l[g.route.id]||(l={...l,[g.route.id]:y.error}),e.fetchers.delete(u)}else if(Be(y))B(!1,"Unhandled fetcher revalidation redirect");else{let g=Oe(y.data);e.fetchers.set(u,g)}}),{loaderData:i,errors:l}}function hn(e,t,r,n){let a=Object.entries(t).filter(([,o])=>o!==kn).reduce((o,[i,l])=>(o[i]=l,o),{});for(let o of r){let i=o.route.id;if(!t.hasOwnProperty(i)&&e.hasOwnProperty(i)&&o.route.loader&&(a[i]=e[i]),n&&n.hasOwnProperty(i))break}return a}function mn(e){return e?we(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Ie(e,t){return(t?e.slice(0,e.findIndex(n=>n.route.id===t)+1):[...e]).reverse().find(n=>n.route.hasErrorBoundary===!0)||e[0]}function St(e){let t=e.length===1?e[0]:e.find(r=>r.index||!r.path||r.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Se(e,{pathname:t,routeId:r,method:n,type:a,message:o}={}){let i="Unknown Server Error",l="Unknown @remix-run/router error";return e===400?(i="Bad Request",n&&t&&r?l=`You made a ${n} request to "${t}" but did not provide a \`loader\` for route "${r}", so there is no way to handle the request.`:a==="invalid-body"&&(l="Unable to encode submission body")):e===403?(i="Forbidden",l=`Route "${r}" does not match URL "${t}"`):e===404?(i="Not Found",l=`No route matches URL "${t}"`):e===405&&(i="Method Not Allowed",n&&t&&r?l=`You made a ${n.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${r}", so there is no way to handle the request.`:n&&(l=`Invalid request method "${n.toUpperCase()}"`)),new Ye(e||500,i,new Error(l),!0)}function xt(e){let t=Object.entries(e);for(let r=t.length-1;r>=0;r--){let[n,a]=t[r];if(Be(a))return{key:n,result:a}}}function Bn(e){let t=typeof e=="string"?ke(e):e;return Me({...t,hash:""})}function zo(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function Bo(e){return new Ye(e.init?.status??500,e.init?.statusText??"Internal Server Error",e.data)}function Wo(e){return e!=null&&typeof e=="object"&&Object.entries(e).every(([t,r])=>typeof t=="string"&&Yo(r))}function Yo(e){return e!=null&&typeof e=="object"&&"type"in e&&"result"in e&&(e.type==="data"||e.type==="error")}function Vo(e){return wr(e.result)&&Lo.has(e.result.status)}function we(e){return e.type==="error"}function Be(e){return(e&&e.type)==="redirect"}function sr(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function wr(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Jo(e){return Po.has(e.toUpperCase())}function ve(e){return xo.has(e.toUpperCase())}function Er(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Tt(e,t){let r=typeof t=="string"?ke(t).search:t.search;if(e[e.length-1].route.index&&Er(r||""))return e[e.length-1];let n=On(e);return n[n.length-1]}function pn(e){let{formMethod:t,formAction:r,formEncType:n,text:a,formData:o,json:i}=e;if(!(!t||!r||!n)){if(a!=null)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a};if(o!=null)return{formMethod:t,formAction:r,formEncType:n,formData:o,json:void 0,text:void 0};if(i!==void 0)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:i,text:void 0}}}function Zt(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Go(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function it(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Ko(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Oe(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Xo(e,t){try{let r=e.sessionStorage.getItem(Fn);if(r){let n=JSON.parse(r);for(let[a,o]of Object.entries(n||{}))o&&Array.isArray(o)&&t.set(a,new Set(o||[]))}}catch{}}function qo(e,t){if(t.size>0){let r={};for(let[n,a]of t)r[n]=[...a];try{e.sessionStorage.setItem(Fn,JSON.stringify(r))}catch(n){ie(!1,`Failed to save applied view transitions in sessionStorage (${n}).`)}}}function yn(){let e,t,r=new Promise((n,a)=>{e=async o=>{n(o);try{await r}catch{}},t=async o=>{a(o);try{await r}catch{}}});return{promise:r,resolve:e,reject:t}}var Ve=f.createContext(null);Ve.displayName="DataRouter";var Qe=f.createContext(null);Qe.displayName="DataRouterState";var Qo=f.createContext(!1);function Zo(){return f.useContext(Qo)}var Rr=f.createContext({isTransitioning:!1});Rr.displayName="ViewTransition";var br=f.createContext(new Map);br.displayName="Fetchers";var ei=f.createContext(null);ei.displayName="Await";var Re=f.createContext(null);Re.displayName="Navigation";var $t=f.createContext(null);$t.displayName="Location";var xe=f.createContext({outlet:null,matches:[],isDataRoute:!1});xe.displayName="Route";var Sr=f.createContext(null);Sr.displayName="RouteError";function ti(e,{relative:t}={}){B(mt(),"useHref() may be used only in the context of a <Router> component.");let{basename:r,navigator:n}=f.useContext(Re),{hash:a,pathname:o,search:i}=pt(e,{relative:t}),l=o;return r!=="/"&&(l=o==="/"?r:Le([r,o])),n.createHref({pathname:l,search:i,hash:a})}function mt(){return f.useContext($t)!=null}function Ce(){return B(mt(),"useLocation() may be used only in the context of a <Router> component."),f.useContext($t).location}var Wn="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Yn(e){f.useContext(Re).static||f.useLayoutEffect(e)}function Vn(){let{isDataRoute:e}=f.useContext(xe);return e?vi():ri()}function ri(){B(mt(),"useNavigate() may be used only in the context of a <Router> component.");let e=f.useContext(Ve),{basename:t,navigator:r}=f.useContext(Re),{matches:n}=f.useContext(xe),{pathname:a}=Ce(),o=JSON.stringify(yr(n)),i=f.useRef(!1);return Yn(()=>{i.current=!0}),f.useCallback((s,u={})=>{if(ie(i.current,Wn),!i.current)return;if(typeof s=="number"){r.go(s);return}let h=vr(s,JSON.parse(o),a,u.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:Le([t,h.pathname])),(u.replace?r.replace:r.push)(h,u.state,u)},[t,r,o,a,e])}var ni=f.createContext(null);function ai(e){let t=f.useContext(xe).outlet;return f.useMemo(()=>t&&f.createElement(ni.Provider,{value:e},t),[t,e])}function oi(){let{matches:e}=f.useContext(xe),t=e[e.length-1];return t?t.params:{}}function pt(e,{relative:t}={}){let{matches:r}=f.useContext(xe),{pathname:n}=Ce(),a=JSON.stringify(yr(r));return f.useMemo(()=>vr(e,JSON.parse(a),n,t==="path"),[e,a,n,t])}function ii(e,t,r,n,a){B(mt(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=f.useContext(Re),{matches:i}=f.useContext(xe),l=i[i.length-1],s=l?l.params:{},u=l?l.pathname:"/",h=l?l.pathnameBase:"/",c=l&&l.route;{let b=c&&c.path||"";Kn(u,!c||b.endsWith("*")||b.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${u}" (under <Route path="${b}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
3
|
-
|
|
4
|
-
Please change the parent <Route path="${b}"> to <Route path="${b==="/"?"*":`${b}/*`}">.`)}let y=Ce(),g;g=y;let E=g.pathname||"/",P=E;if(h!=="/"){let b=h.replace(/^\//,"").split("/");P="/"+E.replace(/^\//,"").split("/").slice(b.length).join("/")}let R=Ae(e,{pathname:P});return ie(c||R!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),ie(R==null||R[R.length-1].route.element!==void 0||R[R.length-1].route.Component!==void 0||R[R.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),di(R&&R.map(b=>Object.assign({},b,{params:Object.assign({},s,b.params),pathname:Le([h,o.encodeLocation?o.encodeLocation(b.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?h:Le([h,o.encodeLocation?o.encodeLocation(b.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathnameBase])})),i,r,n,a)}function li(){let e=Gn(),t=We(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,n="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:n},o={padding:"2px 4px",backgroundColor:n},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=f.createElement(f.Fragment,null,f.createElement("p",null,"💿 Hey developer 👋"),f.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",f.createElement("code",{style:o},"ErrorBoundary")," or"," ",f.createElement("code",{style:o},"errorElement")," prop on your route.")),f.createElement(f.Fragment,null,f.createElement("h2",null,"Unexpected Application Error!"),f.createElement("h3",{style:{fontStyle:"italic"}},t),r?f.createElement("pre",{style:a},r):null,i)}var si=f.createElement(li,null),ui=class extends f.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){return this.state.error!==void 0?f.createElement(xe.Provider,{value:this.props.routeContext},f.createElement(Sr.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function ci({routeContext:e,match:t,children:r}){let n=f.useContext(Ve);return n&&n.static&&n.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=t.route.id),f.createElement(xe.Provider,{value:e},r)}function di(e,t=[],r=null,n=null,a=null){if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let o=e,i=r?.errors;if(i!=null){let h=o.findIndex(c=>c.route.id&&i?.[c.route.id]!==void 0);B(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),o=o.slice(0,Math.min(o.length,h+1))}let l=!1,s=-1;if(r)for(let h=0;h<o.length;h++){let c=o[h];if((c.route.HydrateFallback||c.route.hydrateFallbackElement)&&(s=h),c.route.id){let{loaderData:y,errors:g}=r,E=c.route.loader&&!y.hasOwnProperty(c.route.id)&&(!g||g[c.route.id]===void 0);if(c.route.lazy||E){l=!0,s>=0?o=o.slice(0,s+1):o=[o[0]];break}}}let u=r&&n?(h,c)=>{n(h,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:ht(r.matches),errorInfo:c})}:void 0;return o.reduceRight((h,c,y)=>{let g,E=!1,P=null,R=null;r&&(g=i&&c.route.id?i[c.route.id]:void 0,P=c.route.errorElement||si,l&&(s<0&&y===0?(Kn("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),E=!0,R=null):s===y&&(E=!0,R=c.route.hydrateFallbackElement||null)));let x=t.concat(o.slice(0,y+1)),b=()=>{let T;return g?T=P:E?T=R:c.route.Component?T=f.createElement(c.route.Component,null):c.route.element?T=c.route.element:T=h,f.createElement(ci,{match:c,routeContext:{outlet:h,matches:x,isDataRoute:r!=null},children:T})};return r&&(c.route.ErrorBoundary||c.route.errorElement||y===0)?f.createElement(ui,{location:r.location,revalidation:r.revalidation,component:P,error:g,children:b(),routeContext:{outlet:null,matches:x,isDataRoute:!0},onError:u}):b()},null)}function xr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Jn(e){let t=f.useContext(Ve);return B(t,xr(e)),t}function Ze(e){let t=f.useContext(Qe);return B(t,xr(e)),t}function fi(e){let t=f.useContext(xe);return B(t,xr(e)),t}function yt(e){let t=fi(e),r=t.matches[t.matches.length-1];return B(r.route.id,`${e} can only be used on routes that contain a unique "id"`),r.route.id}function hi(){return yt("useRouteId")}function mi(){return Ze("useNavigation").navigation}function ts(){let e=Jn("useRevalidator"),t=Ze("useRevalidator"),r=f.useCallback(async()=>{await e.router.revalidate()},[e.router]);return f.useMemo(()=>({revalidate:r,state:t.revalidation}),[r,t.revalidation])}function Cr(){let{matches:e,loaderData:t}=Ze("useMatches");return f.useMemo(()=>e.map(r=>Mn(r,t)),[e,t])}function pi(){let e=Ze("useLoaderData"),t=yt("useLoaderData");return e.loaderData[t]}function yi(){let e=Ze("useActionData"),t=yt("useLoaderData");return e.actionData?e.actionData[t]:void 0}function Gn(){let e=f.useContext(Sr),t=Ze("useRouteError"),r=yt("useRouteError");return e!==void 0?e:t.errors?.[r]}function vi(){let{router:e}=Jn("useNavigate"),t=yt("useNavigate"),r=f.useRef(!1);return Yn(()=>{r.current=!0}),f.useCallback(async(a,o={})=>{ie(r.current,Wn),r.current&&(typeof a=="number"?await e.navigate(a):await e.navigate(a,{fromRouteId:t,...o}))},[e,t])}var vn={};function Kn(e,t,r){!t&&!vn[e]&&(vn[e]=!0,ie(!1,r))}var gn={};function ur(e,t){!e&&!gn[t]&&(gn[t]=!0,console.warn(t))}var gi="useOptimistic",wn=Ha[gi],wi=()=>{};function Ei(e){return wn?wn(e):[e,wi]}function rs(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&ie(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:f.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&ie(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:f.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&ie(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:f.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var ns=["HydrateFallback","hydrateFallbackElement"],Ri=class{constructor(){this.status="pending",this.promise=new Promise((e,t)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",e(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",t(r))}})}};function as({router:e,flushSync:t,unstable_onError:r,unstable_useTransitions:n}){let[a,o]=f.useState(e.state),[i,l]=Ei(a),[s,u]=f.useState(),[h,c]=f.useState({isTransitioning:!1}),[y,g]=f.useState(),[E,P]=f.useState(),[R,x]=f.useState(),b=f.useRef(new Map),T=f.useCallback((m,{deletedFetchers:W,newErrors:Y,flushSync:G,viewTransitionOpts:H})=>{Y&&r&&Object.values(Y).forEach(Z=>r(Z,{location:m.location,params:m.matches[0]?.params??{},unstable_pattern:ht(m.matches)})),m.fetchers.forEach((Z,q)=>{Z.data!==void 0&&b.current.set(q,Z.data)}),W.forEach(Z=>b.current.delete(Z)),ur(G===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let se=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition=="function";if(ur(H==null||se,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!H||!se){t&&G?t(()=>o(m)):n===!1?o(m):f.startTransition(()=>{n===!0&&l(Z=>En(Z,m)),o(m)});return}if(t&&G){t(()=>{E&&(y?.resolve(),E.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:H.currentLocation,nextLocation:H.nextLocation})});let Z=e.window.document.startViewTransition(()=>{t(()=>o(m))});Z.finished.finally(()=>{t(()=>{g(void 0),P(void 0),u(void 0),c({isTransitioning:!1})})}),t(()=>P(Z));return}E?(y?.resolve(),E.skipTransition(),x({state:m,currentLocation:H.currentLocation,nextLocation:H.nextLocation})):(u(m),c({isTransitioning:!0,flushSync:!1,currentLocation:H.currentLocation,nextLocation:H.nextLocation}))},[e.window,t,E,y,n,l,r]);f.useLayoutEffect(()=>e.subscribe(T),[e,T]),f.useEffect(()=>{h.isTransitioning&&!h.flushSync&&g(new Ri)},[h]),f.useEffect(()=>{if(y&&s&&e.window){let m=s,W=y.promise,Y=e.window.document.startViewTransition(async()=>{n===!1?o(m):f.startTransition(()=>{n===!0&&l(G=>En(G,m)),o(m)}),await W});Y.finished.finally(()=>{g(void 0),P(void 0),u(void 0),c({isTransitioning:!1})}),P(Y)}},[s,y,e.window,n,l]),f.useEffect(()=>{y&&s&&i.location.key===s.location.key&&y.resolve()},[y,E,i.location,s]),f.useEffect(()=>{!h.isTransitioning&&R&&(u(R.state),c({isTransitioning:!0,flushSync:!1,currentLocation:R.currentLocation,nextLocation:R.nextLocation}),x(void 0))},[h.isTransitioning,R]);let D=f.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:m=>e.navigate(m),push:(m,W,Y)=>e.navigate(m,{state:W,preventScrollReset:Y?.preventScrollReset}),replace:(m,W,Y)=>e.navigate(m,{replace:!0,state:W,preventScrollReset:Y?.preventScrollReset})}),[e]),M=e.basename||"/",_=f.useMemo(()=>({router:e,navigator:D,static:!1,basename:M,unstable_onError:r}),[e,D,M,r]);return f.createElement(f.Fragment,null,f.createElement(Ve.Provider,{value:_},f.createElement(Qe.Provider,{value:i},f.createElement(br.Provider,{value:b.current},f.createElement(Rr.Provider,{value:h},f.createElement(xi,{basename:M,location:i.location,navigationType:i.historyAction,navigator:D,unstable_useTransitions:n===!0},f.createElement(bi,{routes:e.routes,future:e.future,state:i,unstable_onError:r})))))),null)}function En(e,t){return{...e,navigation:t.navigation.state!=="idle"?t.navigation:e.navigation,revalidation:t.revalidation!=="idle"?t.revalidation:e.revalidation,actionData:t.navigation.state!=="submitting"?t.actionData:e.actionData,fetchers:t.fetchers}}var bi=f.memo(Si);function Si({routes:e,future:t,state:r,unstable_onError:n}){return ii(e,void 0,r,n,t)}function os(e){return ai(e.context)}function xi({basename:e="/",children:t=null,location:r,navigationType:n="POP",navigator:a,static:o=!1,unstable_useTransitions:i}){B(!mt(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),s=f.useMemo(()=>({basename:l,navigator:a,static:o,unstable_useTransitions:i,future:{}}),[l,a,o,i]);typeof r=="string"&&(r=ke(r));let{pathname:u="/",search:h="",hash:c="",state:y=null,key:g="default"}=r,E=f.useMemo(()=>{let P=Ee(u,l);return P==null?null:{location:{pathname:P,search:h,hash:c,state:y,key:g},navigationType:n}},[l,u,h,c,y,g,n]);return ie(E!=null,`<Router basename="${l}"> is not able to match the URL "${u}${h}${c}" because it does not start with the basename, so the <Router> won't render anything.`),E==null?null:f.createElement(Re.Provider,{value:s},f.createElement($t.Provider,{children:t,value:E}))}function Ci(){return{params:oi(),loaderData:pi(),actionData:yi(),matches:Cr()}}function is(e){return function(){const r=Ci();return f.createElement(e,r)}}var Dt="get",_t="application/x-www-form-urlencoded";function jt(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function Pi(e){return jt(e)&&e.tagName.toLowerCase()==="button"}function Li(e){return jt(e)&&e.tagName.toLowerCase()==="form"}function Mi(e){return jt(e)&&e.tagName.toLowerCase()==="input"}function Ti(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Di(e,t){return e.button===0&&(!t||t==="_self")&&!Ti(e)}function cr(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map(a=>[r,a]):[[r,n]])},[]))}function _i(e,t){let r=cr(e);return t&&t.forEach((n,a)=>{r.has(a)||t.getAll(a).forEach(o=>{r.append(a,o)})}),r}var Ct=null;function Oi(){if(Ct===null)try{new FormData(document.createElement("form"),0),Ct=!1}catch{Ct=!0}return Ct}var Ai=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function er(e){return e!=null&&!Ai.has(e)?(ie(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${_t}"`),null):e}function Ni(e,t){let r,n,a,o,i;if(Li(e)){let l=e.getAttribute("action");n=l?Ee(l,t):null,r=e.getAttribute("method")||Dt,a=er(e.getAttribute("enctype"))||_t,o=new FormData(e)}else if(Pi(e)||Mi(e)&&(e.type==="submit"||e.type==="image")){let l=e.form;if(l==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let s=e.getAttribute("formaction")||l.getAttribute("action");if(n=s?Ee(s,t):null,r=e.getAttribute("formmethod")||l.getAttribute("method")||Dt,a=er(e.getAttribute("formenctype"))||er(l.getAttribute("enctype"))||_t,o=new FormData(l,e),!Oi()){let{name:u,type:h,value:c}=e;if(h==="image"){let y=u?`${u}.`:"";o.append(`${y}x`,"0"),o.append(`${y}y`,"0")}else u&&o.append(u,c)}}else{if(jt(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');r=Dt,n=null,a=_t,i=e}return o&&a==="text/plain"&&(i=o,o=void 0),{action:n,method:r.toLowerCase(),encType:a,formData:o,body:i}}var Ii=-1,Fi=-2,ki=-3,$i=-4,ji=-5,Ui=-6,Hi=-7,zi="B",Bi="D",Xn="E",Wi="M",Yi="N",qn="P",Vi="R",Ji="S",Gi="Y",Ki="U",Xi="Z",Qn=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function qi(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),o=(t+a).split(`
|
|
5
|
-
`);t=o.pop()||"";for(const i of o)n.enqueue(i)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var tr=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function dr(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return Rn.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;for(const a of e)r.push(a);return t.length=r.length,Rn.call(this,n)}function Rn(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;let o;const i=[[e,s=>{o=s}]];let l=[];for(;i.length>0;){const[s,u]=i.pop();switch(s){case Hi:u(void 0);continue;case ji:u(null);continue;case Fi:u(NaN);continue;case Ui:u(1/0);continue;case ki:u(-1/0);continue;case $i:u(-0);continue}if(t[s]){u(t[s]);continue}const h=r[s];if(!h||typeof h!="object"){t[s]=h,u(h);continue}if(Array.isArray(h))if(typeof h[0]=="string"){const[c,y,g]=h;switch(c){case Bi:u(t[s]=new Date(y));continue;case Ki:u(t[s]=new URL(y));continue;case zi:u(t[s]=BigInt(y));continue;case Vi:u(t[s]=new RegExp(y,g));continue;case Gi:u(t[s]=Symbol.for(y));continue;case Ji:const E=new Set;t[s]=E;for(let D=h.length-1;D>0;D--)i.push([h[D],M=>{E.add(M)}]);u(E);continue;case Wi:const P=new Map;t[s]=P;for(let D=h.length-2;D>0;D-=2){const M=[];i.push([h[D+1],_=>{M[1]=_}]),i.push([h[D],_=>{M[0]=_}]),l.push(()=>{P.set(M[0],M[1])})}u(P);continue;case Yi:const R=Object.create(null);t[s]=R;for(const D of Object.keys(y).reverse()){const M=[];i.push([y[D],_=>{M[1]=_}]),i.push([Number(D.slice(1)),_=>{M[0]=_}]),l.push(()=>{R[M[0]]=M[1]})}u(R);continue;case qn:if(t[y])u(t[s]=t[y]);else{const D=new Qn;n[y]=D,u(t[s]=D.promise)}continue;case Xn:const[,x,b]=h;let T=b&&tr&&tr[b]?new tr[b](x):new Error(x);t[s]=T,u(T);continue;case Xi:u(t[s]=t[y]);continue;default:if(Array.isArray(a)){const D=[],M=h.slice(1);for(let _=0;_<M.length;_++){const m=M[_];i.push([m,W=>{D[_]=W}])}l.push(()=>{for(const _ of a){const m=_(h[0],...D);if(m){u(t[s]=m.value);return}}throw new SyntaxError});continue}throw new SyntaxError}}else{const c=[];t[s]=c;for(let y=0;y<h.length;y++){const g=h[y];g!==Ii&&i.push([g,E=>{c[y]=E}])}u(c);continue}else{const c={};t[s]=c;for(const y of Object.keys(h).reverse()){const g=[];i.push([h[y],E=>{g[1]=E}]),i.push([Number(y.slice(1)),E=>{g[0]=E}]),l.push(()=>{c[g[0]]=g[1]})}u(c);continue}}for(;l.length>0;)l.pop()();return o}async function Qi(e,t){const{plugins:r}=t??{},n=new Qn,a=e.pipeThrough(qi()).getReader(),o={values:[],hydrated:[],deferred:{},plugins:r},i=await Zi.call(o,a);let l=n.promise;return i.done?n.resolve():l=el.call(o,a).then(n.resolve).catch(s=>{for(const u of Object.values(o.deferred))u.reject(s);n.reject(s)}),{done:l.then(()=>a.closed),value:i.value}}async function Zi(e){const t=await e.read();if(!t.value)throw new SyntaxError;let r;try{r=JSON.parse(t.value)}catch{throw new SyntaxError}return{done:t.done,value:dr.call(this,r)}}async function el(e){let t=await e.read();for(;!t.done;){if(!t.value)continue;const r=t.value;switch(r[0]){case qn:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),o=this.deferred[a];if(!o)throw new Error(`Deferred ID ${a} not found in stream`);const i=r.slice(n+1);let l;try{l=JSON.parse(i)}catch{throw new SyntaxError}const s=dr.call(this,l);o.resolve(s);break}case Xn:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),o=this.deferred[a];if(!o)throw new Error(`Deferred ID ${a} not found in stream`);const i=r.slice(n+1);let l;try{l=JSON.parse(i)}catch{throw new SyntaxError}const s=dr.call(this,l);o.reject(s);break}default:throw new SyntaxError}t=await e.read()}}async function tl(e){let t={signal:e.signal};if(e.method!=="GET"){t.method=e.method;let r=e.headers.get("Content-Type");r&&/\bapplication\/json\b/.test(r)?(t.headers={"Content-Type":r},t.body=JSON.stringify(await e.json())):r&&/\btext\/plain\b/.test(r)?(t.headers={"Content-Type":r},t.body=await e.text()):r&&/\bapplication\/x-www-form-urlencoded\b/.test(r)?t.body=new URLSearchParams(await e.text()):t.body=await e.formData()}return t}var rl={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},nl=/[&><\u2028\u2029]/g;function al(e){return e.replace(nl,t=>rl[t])}function ge(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}var fr=Symbol("SingleFetchRedirect"),Zn=class extends Error{},ol=202,il=new Set([100,101,204,205]);function ls(e,t,r,n,a){let o=ll(e,i=>{let l=t.routes[i.route.id];ge(l,"Route not found in manifest");let s=r[i.route.id];return{hasLoader:l.hasLoader,hasClientLoader:l.hasClientLoader,hasShouldRevalidate:!!s?.shouldRevalidate}},ml,n,a);return async i=>i.runClientMiddleware(o)}function ll(e,t,r,n,a,o=()=>!0){return async i=>{let{request:l,matches:s,fetcherKey:u}=i,h=e();if(l.method!=="GET")return sl(i,r,a);let c=s.some(y=>{let{hasLoader:g,hasClientLoader:E}=t(y);return y.shouldCallHandler()&&g&&!E});return!n&&!c?ul(i,t,r,a):u?fl(i,r,a):cl(i,h,t,r,n,a,o)}}async function sl(e,t,r){let n=e.matches.find(i=>i.shouldCallHandler());ge(n,"No action match found");let a,o=await n.resolve(async i=>await i(async()=>{let{data:s,status:u}=await t(e,r,[n.route.id]);return a=u,ft(s,n.route.id)}));return wr(o.result)||We(o.result)||sr(o.result)?{[n.route.id]:o}:{[n.route.id]:{type:o.type,result:yo(o.result,a)}}}async function ul(e,t,r,n){let a=e.matches.filter(i=>i.shouldCallHandler()),o={};return await Promise.all(a.map(i=>i.resolve(async l=>{try{let{hasClientLoader:s}=t(i),u=i.route.id,h=s?await l(async()=>{let{data:c}=await r(e,n,[u]);return ft(c,u)}):await l();o[i.route.id]={type:"data",result:h}}catch(s){o[i.route.id]={type:"error",result:s}}}))),o}async function cl(e,t,r,n,a,o,i=()=>!0){let l=new Set,s=!1,u=e.matches.map(()=>bn()),h=bn(),c={},y=Promise.all(e.matches.map(async(E,P)=>E.resolve(async R=>{u[P].resolve();let x=E.route.id,{hasLoader:b,hasClientLoader:T,hasShouldRevalidate:D}=r(E),M=!E.shouldRevalidateArgs||E.shouldRevalidateArgs.actionStatus==null||E.shouldRevalidateArgs.actionStatus<400;if(!E.shouldCallHandler(M)){s||(s=E.shouldRevalidateArgs!=null&&b&&D===!0);return}if(i(E)&&T){b&&(s=!0);try{let m=await R(async()=>{let{data:W}=await n(e,o,[x]);return ft(W,x)});c[x]={type:"data",result:m}}catch(m){c[x]={type:"error",result:m}}return}b&&l.add(x);try{let m=await R(async()=>{let W=await h.promise;return ft(W,x)});c[x]={type:"data",result:m}}catch(m){c[x]={type:"error",result:m}}})));if(await Promise.all(u.map(E=>E.promise)),(!t.state.initialized&&t.state.navigation.state==="idle"||l.size===0)&&!window.__reactRouterHdrActive)h.resolve({routes:{}});else{let E=a&&s&&l.size>0?[...l.keys()]:void 0;try{let P=await n(e,o,E);h.resolve(P.data)}catch(P){h.reject(P)}}return await y,await dl(h.promise,e.matches,l,c),c}async function dl(e,t,r,n){try{let a,o=await e;if("routes"in o){for(let i of t)if(i.route.id in o.routes){let l=o.routes[i.route.id];if("error"in l){a=l.error,n[i.route.id]?.result==null&&(n[i.route.id]={type:"error",result:a});break}}}a!==void 0&&Array.from(r.values()).forEach(i=>{n[i].result instanceof Zn&&(n[i].result=a)})}catch{}}async function fl(e,t,r){let n=e.matches.find(i=>i.shouldCallHandler());ge(n,"No fetcher match found");let a=n.route.id,o=await n.resolve(async i=>i(async()=>{let{data:l}=await t(e,r,[a]);return ft(l,a)}));return{[n.route.id]:o}}function hl(e){let t=e.searchParams.getAll("index");e.searchParams.delete("index");let r=[];for(let n of t)n&&r.push(n);for(let n of r)e.searchParams.append("index",n);return e}function ea(e,t,r){let n=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n.pathname==="/"?n.pathname=`_root.${r}`:t&&Ee(n.pathname,t)==="/"?n.pathname=`${t.replace(/\/$/,"")}/_root.${r}`:n.pathname=`${n.pathname.replace(/\/$/,"")}.${r}`,n}async function ml(e,t,r){let{request:n}=e,a=ea(n.url,t,"data");n.method==="GET"&&(a=hl(a),r&&a.searchParams.set("_routes",r.join(",")));let o=await fetch(a,await tl(n));if(o.status>=400&&!o.headers.has("X-Remix-Response"))throw new Ye(o.status,o.statusText,await o.text());if(o.status===204&&o.headers.has("X-Remix-Redirect"))return{status:ol,data:{redirect:{redirect:o.headers.get("X-Remix-Redirect"),status:Number(o.headers.get("X-Remix-Status")||"302"),revalidate:o.headers.get("X-Remix-Revalidate")==="true",reload:o.headers.get("X-Remix-Reload-Document")==="true",replace:o.headers.get("X-Remix-Replace")==="true"}}};if(il.has(o.status)){let i={};return r&&n.method!=="GET"&&(i[r[0]]={data:void 0}),{status:o.status,data:{routes:i}}}ge(o.body,"No response body to decode");try{let i=await pl(o.body,window),l;if(n.method==="GET"){let s=i.value;fr in s?l={redirect:s[fr]}:l={routes:s}}else{let s=i.value,u=r?.[0];ge(u,"No routeId found for single fetch call decoding"),"redirect"in s?l={redirect:s}:l={routes:{[u]:s}}}return{status:o.status,data:l}}catch{throw new Error("Unable to decode turbo-stream response")}}function pl(e,t){return Qi(e,{plugins:[(r,...n)=>{if(r==="SanitizedError"){let[a,o,i]=n,l=Error;a&&a in t&&typeof t[a]=="function"&&(l=t[a]);let s=new l(o);return s.stack=i,{value:s}}if(r==="ErrorResponse"){let[a,o,i]=n;return{value:new Ye(o,i,a)}}if(r==="SingleFetchRedirect")return{value:{[fr]:n[0]}};if(r==="SingleFetchClassInstance")return{value:n[0]};if(r==="SingleFetchFallback")return{value:void 0}}]})}function ft(e,t){if("redirect"in e){let{redirect:n,revalidate:a,reload:o,replace:i,status:l}=e.redirect;throw vo(n,{status:l,headers:{...a?{"X-Remix-Revalidate":"yes"}:null,...o?{"X-Remix-Reload-Document":"yes"}:null,...i?{"X-Remix-Replace":"yes"}:null}})}let r=e.routes[t];if(r==null)throw new Zn(`No result found for routeId "${t}"`);if("error"in r)throw r.error;if("data"in r)return r.data;throw new Error(`Invalid response found for routeId "${t}"`)}function bn(){let e,t,r=new Promise((n,a)=>{e=async o=>{n(o);try{await r}catch{}},t=async o=>{a(o);try{await r}catch{}}});return{promise:r,resolve:e,reject:t}}async function ta(e,t){if(e.id in t)return t[e.id];try{let r=await import(e.module);return t[e.id]=r,r}catch(r){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(r),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function yl(e,t,r){let n=e.map(o=>{let i=t[o.route.id],l=r.routes[o.route.id];return[l&&l.css?l.css.map(s=>({rel:"stylesheet",href:s})):[],i?.links?.()||[]]}).flat(2),a=Lr(e,r);return oa(n,a)}function ra(e){return e.css?e.css.map(t=>({rel:"stylesheet",href:t})):[]}async function vl(e){if(!e.css)return;let t=ra(e);await Promise.all(t.map(aa))}async function na(e,t){if(!e.css&&!t.links||!bl())return;let r=[];if(e.css&&r.push(...ra(e)),t.links&&r.push(...t.links()),r.length===0)return;let n=[];for(let a of r)!Pr(a)&&a.rel==="stylesheet"&&n.push({...a,rel:"preload",as:"style"});await Promise.all(n.map(aa))}async function aa(e){return new Promise(t=>{if(e.media&&!window.matchMedia(e.media).matches||document.querySelector(`link[rel="stylesheet"][href="${e.href}"]`))return t();let r=document.createElement("link");Object.assign(r,e);function n(){document.head.contains(r)&&document.head.removeChild(r)}r.onload=()=>{n(),t()},r.onerror=()=>{n(),t()},document.head.appendChild(r)})}function Pr(e){return e!=null&&typeof e.page=="string"}function gl(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function wl(e,t,r){let n=await Promise.all(e.map(async a=>{let o=t.routes[a.route.id];if(o){let i=await ta(o,r);return i.links?i.links():[]}return[]}));return oa(n.flat(1).filter(gl).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function Sn(e,t,r,n,a,o){let i=(s,u)=>r[u]?s.route.id!==r[u].route.id:!0,l=(s,u)=>r[u].pathname!==s.pathname||r[u].route.path?.endsWith("*")&&r[u].params["*"]!==s.params["*"];return o==="assets"?t.filter((s,u)=>i(s,u)||l(s,u)):o==="data"?t.filter((s,u)=>{let h=n.routes[s.route.id];if(!h||!h.hasLoader)return!1;if(i(s,u)||l(s,u))return!0;if(s.route.shouldRevalidate){let c=s.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:r[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:s.params,defaultShouldRevalidate:!0});if(typeof c=="boolean")return c}return!0}):[]}function Lr(e,t,{includeHydrateFallback:r}={}){return El(e.map(n=>{let a=t.routes[n.route.id];if(!a)return[];let o=[a.module];return a.clientActionModule&&(o=o.concat(a.clientActionModule)),a.clientLoaderModule&&(o=o.concat(a.clientLoaderModule)),r&&a.hydrateFallbackModule&&(o=o.concat(a.hydrateFallbackModule)),a.imports&&(o=o.concat(a.imports)),o}).flat(1))}function El(e){return[...new Set(e)]}function Rl(e){let t={},r=Object.keys(e).sort();for(let n of r)t[n]=e[n];return t}function oa(e,t){let r=new Set,n=new Set(t);return e.reduce((a,o)=>{if(t&&!Pr(o)&&o.as==="script"&&o.href&&n.has(o.href))return a;let l=JSON.stringify(Rl(o));return r.has(l)||(r.add(l),a.push({key:l,link:o})),a},[])}var Pt;function bl(){if(Pt!==void 0)return Pt;let e=document.createElement("link");return Pt=e.relList.supports("preload"),e=null,Pt}function Sl(){return f.createElement(hr,{title:"Loading...",renderScripts:!0},f.createElement("script",{dangerouslySetInnerHTML:{__html:`
|
|
6
|
-
console.log(
|
|
7
|
-
"💿 Hey developer 👋. You can provide a way better UX than this " +
|
|
8
|
-
"when your app is loading JS modules and/or running \`clientLoader\` " +
|
|
9
|
-
"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback " +
|
|
10
|
-
"for more information."
|
|
11
|
-
);
|
|
12
|
-
`}}))}function ia(e){let t={};return Object.values(e).forEach(r=>{if(r){let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}}),t}function xl(e,t,r){let n=la(t),a=t.HydrateFallback&&(!r||e.id==="root")?t.HydrateFallback:e.id==="root"?Sl:void 0,o=t.ErrorBoundary?t.ErrorBoundary:e.id==="root"?()=>f.createElement(ca,{error:Gn()}):void 0;return e.id==="root"&&t.Layout?{...n?{element:f.createElement(t.Layout,null,f.createElement(n,null))}:{Component:n},...o?{errorElement:f.createElement(t.Layout,null,f.createElement(o,null))}:{ErrorBoundary:o},...a?{hydrateFallbackElement:f.createElement(t.Layout,null,f.createElement(a,null))}:{HydrateFallback:a}}:{Component:n,ErrorBoundary:o,HydrateFallback:a}}function ss(e,t,r,n,a,o){return Mr(t,r,n,a,o,"",ia(t),e)}function Lt(e,t){if(e==="loader"&&!t.hasLoader||e==="action"&&!t.hasAction){let n=`You are trying to call ${e==="action"?"serverAction()":"serverLoader()"} on a route that does not have a server ${e} (routeId: "${t.id}")`;throw console.error(n),new Ye(400,"Bad Request",new Error(n),!0)}}function rr(e,t){let r=e==="clientAction"?"a":"an",n=`Route "${t}" does not have ${r} ${e}, but you are trying to submit to it. To fix this, please add ${r} \`${e}\` function to the route`;throw console.error(n),new Ye(405,"Method Not Allowed",new Error(n),!0)}function Mr(e,t,r,n,a,o="",i=ia(e),l){return(i[o]||[]).map(s=>{let u=t[s.id];function h(b){return ge(typeof b=="function","No single fetch function available for route handler"),b()}function c(b){return s.hasLoader?h(b):Promise.resolve(null)}function y(b){if(!s.hasAction)throw rr("action",s.id);return h(b)}function g(b){import(b)}function E(b){b.clientActionModule&&g(b.clientActionModule),b.clientLoaderModule&&g(b.clientLoaderModule)}async function P(b){let T=t[s.id],D=T?na(s,T):Promise.resolve();try{return b()}finally{await D}}let R={id:s.id,index:s.index,path:s.path};if(u){Object.assign(R,{...R,...xl(s,u,a),middleware:u.clientMiddleware,handle:u.handle,shouldRevalidate:xn(R.path,u,s,n,l)});let b=r&&r.loaderData&&s.id in r.loaderData,T=b?r?.loaderData?.[s.id]:void 0,D=r&&r.errors&&s.id in r.errors,M=D?r?.errors?.[s.id]:void 0,_=l==null&&(u.clientLoader?.hydrate===!0||!s.hasLoader);R.loader=async({request:m,params:W,context:Y,unstable_pattern:G},H)=>{try{return await P(async()=>(ge(u,"No `routeModule` available for critical-route loader"),u.clientLoader?u.clientLoader({request:m,params:W,context:Y,unstable_pattern:G,async serverLoader(){if(Lt("loader",s),_){if(b)return T;if(D)throw M}return c(H)}}):c(H)))}finally{_=!1}},R.loader.hydrate=Ll(s.id,u.clientLoader,s.hasLoader,a),R.action=({request:m,params:W,context:Y,unstable_pattern:G},H)=>P(async()=>{if(ge(u,"No `routeModule` available for critical-route action"),!u.clientAction){if(a)throw rr("clientAction",s.id);return y(H)}return u.clientAction({request:m,params:W,context:Y,unstable_pattern:G,async serverAction(){return Lt("action",s),y(H)}})})}else{s.hasClientLoader||(R.loader=(D,M)=>P(()=>c(M))),s.hasClientAction||(R.action=(D,M)=>P(()=>{if(a)throw rr("clientAction",s.id);return y(M)}));let b;async function T(){return b?await b:(b=(async()=>{(s.clientLoaderModule||s.clientActionModule)&&await new Promise(M=>setTimeout(M,0));let D=Pl(s,t);return E(s),await D})(),await b)}R.lazy={loader:s.hasClientLoader?async()=>{let{clientLoader:D}=s.clientLoaderModule?await import(s.clientLoaderModule):await T();return ge(D,"No `clientLoader` export found"),(M,_)=>D({...M,async serverLoader(){return Lt("loader",s),c(_)}})}:void 0,action:s.hasClientAction?async()=>{let D=s.clientActionModule?import(s.clientActionModule):T();E(s);let{clientAction:M}=await D;return ge(M,"No `clientAction` export found"),(_,m)=>M({..._,async serverAction(){return Lt("action",s),y(m)}})}:void 0,middleware:s.hasClientMiddleware?async()=>{let{clientMiddleware:D}=s.clientMiddlewareModule?await import(s.clientMiddlewareModule):await T();return ge(D,"No `clientMiddleware` export found"),D}:void 0,shouldRevalidate:async()=>{let D=await T();return xn(R.path,D,s,n,l)},handle:async()=>(await T()).handle,Component:async()=>(await T()).Component,ErrorBoundary:s.hasErrorBoundary?async()=>(await T()).ErrorBoundary:void 0}}let x=Mr(e,t,r,n,a,s.id,i,l);return x.length>0&&(R.children=x),R})}function xn(e,t,r,n,a){if(a)return Cl(r.id,t.shouldRevalidate,a);if(!n&&r.hasLoader&&!r.hasClientLoader){let o=e?_n(e)[1].map(l=>l.paramName):[];const i=l=>o.some(s=>l.currentParams[s]!==l.nextParams[s]);if(t.shouldRevalidate){let l=t.shouldRevalidate;return s=>l({...s,defaultShouldRevalidate:i(s)})}else return l=>i(l)}return t.shouldRevalidate}function Cl(e,t,r){let n=!1;return a=>n?t?t(a):a.defaultShouldRevalidate:(n=!0,r.has(e))}async function Pl(e,t){let r=ta(e,t),n=vl(e),a=await r;return await Promise.all([n,na(e,a)]),{Component:la(a),ErrorBoundary:a.ErrorBoundary,clientMiddleware:a.clientMiddleware,clientAction:a.clientAction,clientLoader:a.clientLoader,handle:a.handle,links:a.links,meta:a.meta,shouldRevalidate:a.shouldRevalidate}}function la(e){if(e.default==null)return;if(!(typeof e.default=="object"&&Object.keys(e.default).length===0))return e.default}function Ll(e,t,r,n){return n&&e!=="root"||t!=null&&(t.hydrate===!0||r!==!0)}var Ot=new Set,Ml=1e3,It=new Set,Tl=7680;function Tr(e,t){return e.mode==="lazy"&&t===!0}function Dl({sri:e,...t},r){let n=new Set(r.state.matches.map(l=>l.route.id)),a=r.state.location.pathname.split("/").filter(Boolean),o=["/"];for(a.pop();a.length>0;)o.push(`/${a.join("/")}`),a.pop();o.forEach(l=>{let s=Ae(r.routes,l,r.basename);s&&s.forEach(u=>n.add(u.route.id))});let i=[...n].reduce((l,s)=>Object.assign(l,{[s]:t.routes[s]}),{});return{...t,routes:i,sri:e?!0:void 0}}function us(e,t,r,n,a,o){if(Tr(n,r))return async({path:i,patch:l,signal:s,fetcherKey:u})=>{It.has(i)||await sa([i],u?window.location.href:i,e,t,r,a,o,n.manifestPath,l,s)}}function cs(e,t,r,n,a,o){f.useEffect(()=>{if(!Tr(a,n)||window.navigator?.connection?.saveData===!0)return;function i(h){let c=h.tagName==="FORM"?h.getAttribute("action"):h.getAttribute("href");if(!c)return;let y=h.tagName==="A"?h.pathname:new URL(c,window.location.origin).pathname;It.has(y)||Ot.add(y)}async function l(){document.querySelectorAll("a[data-discover], form[data-discover]").forEach(i);let h=Array.from(Ot.keys()).filter(c=>It.has(c)?(Ot.delete(c),!1):!0);if(h.length!==0)try{await sa(h,null,t,r,n,o,e.basename,a.manifestPath,e.patchRoutes)}catch(c){console.error("Failed to fetch manifest patches",c)}}let s=Al(l,100);l();let u=new MutationObserver(()=>s());return u.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["data-discover","href","action"]}),()=>u.disconnect()},[n,o,t,r,e,a])}function _l(e,t){let r=e||"/__manifest";return t==null?r:`${t}${r}`.replace(/\/+/g,"/")}var nr="react-router-manifest-version";async function sa(e,t,r,n,a,o,i,l,s,u){const h=new URLSearchParams;h.set("paths",e.sort().join(",")),h.set("version",r.version);let c=new URL(_l(l,i),window.location.origin);if(c.search=h.toString(),c.toString().length>Tl){Ot.clear();return}let y;try{let R=await fetch(c,{signal:u});if(R.ok){if(R.status===204&&R.headers.has("X-Remix-Reload-Document")){if(!t){console.warn("Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.");return}try{if(sessionStorage.getItem(nr)===r.version){console.error("Unable to discover routes due to manifest version mismatch.");return}sessionStorage.setItem(nr,r.version)}catch{}window.location.href=t,console.warn("Detected manifest version mismatch, reloading..."),await new Promise(()=>{})}else if(R.status>=400)throw new Error(await R.text())}else throw new Error(`${R.status} ${R.statusText}`);try{sessionStorage.removeItem(nr)}catch{}y=await R.json()}catch(R){if(u?.aborted)return;throw R}let g=new Set(Object.keys(r.routes)),E=Object.values(y).reduce((R,x)=>(x&&!g.has(x.id)&&(R[x.id]=x),R),{});Object.assign(r.routes,E),e.forEach(R=>Ol(R,It));let P=new Set;Object.values(E).forEach(R=>{R&&(!R.parentId||!E[R.parentId])&&P.add(R.parentId)}),P.forEach(R=>s(R||null,Mr(E,n,null,a,o,R)))}function Ol(e,t){if(t.size>=Ml){let r=t.values().next().value;t.delete(r)}t.add(e)}function Al(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}function Dr(){let e=f.useContext(Ve);return ge(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Ut(){let e=f.useContext(Qe);return ge(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Ht=f.createContext(void 0);Ht.displayName="FrameworkContext";function et(){let e=f.useContext(Ht);return ge(e,"You must render this element inside a <HydratedRouter> element"),e}function Nl(e,t){let r=f.useContext(Ht),[n,a]=f.useState(!1),[o,i]=f.useState(!1),{onFocus:l,onBlur:s,onMouseEnter:u,onMouseLeave:h,onTouchStart:c}=t,y=f.useRef(null);f.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let P=x=>{x.forEach(b=>{i(b.isIntersecting)})},R=new IntersectionObserver(P,{threshold:.5});return y.current&&R.observe(y.current),()=>{R.disconnect()}}},[e]),f.useEffect(()=>{if(n){let P=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(P)}}},[n]);let g=()=>{a(!0)},E=()=>{a(!1),i(!1)};return r?e!=="intent"?[o,y,{}]:[o,y,{onFocus:lt(l,g),onBlur:lt(s,E),onMouseEnter:lt(u,g),onMouseLeave:lt(h,E),onTouchStart:lt(c,g)}]:[!1,y,{}]}function lt(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function _r(e,t,r){if(r&&!Ft)return[e[0]];if(t){let n=e.findIndex(a=>t[a.route.id]!==void 0);return e.slice(0,n+1)}return e}var Cn="data-react-router-critical-css";function ds({nonce:e}){let{isSpaMode:t,manifest:r,routeModules:n,criticalCss:a}=et(),{errors:o,matches:i}=Ut(),l=_r(i,o,t),s=f.useMemo(()=>yl(l,n,r),[l,n,r]);return f.createElement(f.Fragment,null,typeof a=="string"?f.createElement("style",{[Cn]:"",dangerouslySetInnerHTML:{__html:a}}):null,typeof a=="object"?f.createElement("link",{[Cn]:"",rel:"stylesheet",href:a.href,nonce:e}):null,s.map(({key:u,link:h})=>Pr(h)?f.createElement(ua,{key:u,nonce:e,...h}):f.createElement("link",{key:u,nonce:e,...h})))}function ua({page:e,...t}){let{router:r}=Dr(),n=f.useMemo(()=>Ae(r.routes,e,r.basename),[r.routes,e,r.basename]);return n?f.createElement(Fl,{page:e,matches:n,...t}):null}function Il(e){let{manifest:t,routeModules:r}=et(),[n,a]=f.useState([]);return f.useEffect(()=>{let o=!1;return wl(e,t,r).then(i=>{o||a(i)}),()=>{o=!0}},[e,t,r]),n}function Fl({page:e,matches:t,...r}){let n=Ce(),{manifest:a,routeModules:o}=et(),{basename:i}=Dr(),{loaderData:l,matches:s}=Ut(),u=f.useMemo(()=>Sn(e,t,s,a,n,"data"),[e,t,s,a,n]),h=f.useMemo(()=>Sn(e,t,s,a,n,"assets"),[e,t,s,a,n]),c=f.useMemo(()=>{if(e===n.pathname+n.search+n.hash)return[];let E=new Set,P=!1;if(t.forEach(x=>{let b=a.routes[x.route.id];!b||!b.hasLoader||(!u.some(T=>T.route.id===x.route.id)&&x.route.id in l&&o[x.route.id]?.shouldRevalidate||b.hasClientLoader?P=!0:E.add(x.route.id))}),E.size===0)return[];let R=ea(e,i,"data");return P&&E.size>0&&R.searchParams.set("_routes",t.filter(x=>E.has(x.route.id)).map(x=>x.route.id).join(",")),[R.pathname+R.search]},[i,l,n,a,u,t,e,o]),y=f.useMemo(()=>Lr(h,a),[h,a]),g=Il(h);return f.createElement(f.Fragment,null,c.map(E=>f.createElement("link",{key:E,rel:"prefetch",as:"fetch",href:E,...r})),y.map(E=>f.createElement("link",{key:E,rel:"modulepreload",href:E,...r})),g.map(({key:E,link:P})=>f.createElement("link",{key:E,nonce:r.nonce,...P})))}function fs(){let{isSpaMode:e,routeModules:t}=et(),{errors:r,matches:n,loaderData:a}=Ut(),o=Ce(),i=_r(n,r,e),l=null;r&&(l=r[i[i.length-1].route.id]);let s=[],u=null,h=[];for(let c=0;c<i.length;c++){let y=i[c],g=y.route.id,E=a[g],P=y.params,R=t[g],x=[],b={id:g,data:E,loaderData:E,meta:[],params:y.params,pathname:y.pathname,handle:y.route.handle,error:l};if(h[c]=b,R?.meta?x=typeof R.meta=="function"?R.meta({data:E,loaderData:E,params:P,location:o,matches:h,error:l}):Array.isArray(R.meta)?[...R.meta]:R.meta:u&&(x=[...u]),x=x||[],!Array.isArray(x))throw new Error("The route at "+y.route.path+` returns an invalid value. All route meta functions must return an array of meta objects.
|
|
13
|
-
|
|
14
|
-
To reference the meta function API, see https://remix.run/route/meta`);b.meta=x,h[c]=b,s=[...x],u=s}return f.createElement(f.Fragment,null,s.flat().map(c=>{if(!c)return null;if("tagName"in c){let{tagName:y,...g}=c;if(!kl(y))return console.warn(`A meta object uses an invalid tagName: ${y}. Expected either 'link' or 'meta'`),null;let E=y;return f.createElement(E,{key:JSON.stringify(g),...g})}if("title"in c)return f.createElement("title",{key:"title"},String(c.title));if("charset"in c&&(c.charSet??(c.charSet=c.charset),delete c.charset),"charSet"in c&&c.charSet!=null)return typeof c.charSet=="string"?f.createElement("meta",{key:"charSet",charSet:c.charSet}):null;if("script:ld+json"in c)try{let y=JSON.stringify(c["script:ld+json"]);return f.createElement("script",{key:`script:ld+json:${y}`,type:"application/ld+json",dangerouslySetInnerHTML:{__html:al(y)}})}catch{return null}return f.createElement("meta",{key:JSON.stringify(c),...c})}))}function kl(e){return typeof e=="string"&&/^(meta|link)$/.test(e)}var Ft=!1;function $l(){Ft=!0}function jl(e){let{manifest:t,serverHandoffString:r,isSpaMode:n,renderMeta:a,routeDiscovery:o,ssr:i}=et(),{router:l,static:s,staticContext:u}=Dr(),{matches:h}=Ut(),c=Zo(),y=Tr(o,i);a&&(a.didRenderScripts=!0);let g=_r(h,null,n);f.useEffect(()=>{$l()},[]);let E=f.useMemo(()=>{if(c)return null;let b=u?`window.__reactRouterContext = ${r};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());`:" ",T=s?`${t.hmr?.runtime?`import ${JSON.stringify(t.hmr.runtime)};`:""}${y?"":`import ${JSON.stringify(t.url)}`};
|
|
15
|
-
${g.map((D,M)=>{let _=`route${M}`,m=t.routes[D.route.id];ge(m,`Route ${D.route.id} not found in manifest`);let{clientActionModule:W,clientLoaderModule:Y,clientMiddlewareModule:G,hydrateFallbackModule:H,module:se}=m,Z=[...W?[{module:W,varName:`${_}_clientAction`}]:[],...Y?[{module:Y,varName:`${_}_clientLoader`}]:[],...G?[{module:G,varName:`${_}_clientMiddleware`}]:[],...H?[{module:H,varName:`${_}_HydrateFallback`}]:[],{module:se,varName:`${_}_main`}];if(Z.length===1)return`import * as ${_} from ${JSON.stringify(se)};`;let q=Z.map(te=>`import * as ${te.varName} from "${te.module}";`).join(`
|
|
16
|
-
`),ne=`const ${_} = {${Z.map(te=>`...${te.varName}`).join(",")}};`;return[q,ne].join(`
|
|
17
|
-
`)}).join(`
|
|
18
|
-
`)}
|
|
19
|
-
${y?`window.__reactRouterManifest = ${JSON.stringify(Dl(t,l),null,2)};`:""}
|
|
20
|
-
window.__reactRouterRouteModules = {${g.map((D,M)=>`${JSON.stringify(D.route.id)}:route${M}`).join(",")}};
|
|
21
|
-
|
|
22
|
-
import(${JSON.stringify(t.entry.module)});`:" ";return f.createElement(f.Fragment,null,f.createElement("script",{...e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:b},type:void 0}),f.createElement("script",{...e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:T},type:"module",async:!0}))},[]),P=Ft||c?[]:Ul(t.entry.imports.concat(Lr(g,t,{includeHydrateFallback:!0}))),R=typeof t.sri=="object"?t.sri:{};return ur(!c,"The <Scripts /> element is a no-op when using RSC and can be safely removed."),Ft||c?null:f.createElement(f.Fragment,null,typeof t.sri=="object"?f.createElement("script",{"rr-importmap":"",type:"importmap",suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:JSON.stringify({integrity:R})}}):null,y?null:f.createElement("link",{rel:"modulepreload",href:t.url,crossOrigin:e.crossOrigin,integrity:R[t.url],suppressHydrationWarning:!0}),f.createElement("link",{rel:"modulepreload",href:t.entry.module,crossOrigin:e.crossOrigin,integrity:R[t.entry.module],suppressHydrationWarning:!0}),P.map(x=>f.createElement("link",{key:x,rel:"modulepreload",href:x,crossOrigin:e.crossOrigin,integrity:R[x],suppressHydrationWarning:!0})),E)}function Ul(e){return[...new Set(e)]}function Hl(...e){return t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}var hs=class extends f.Component{constructor(e){super(e),this.state={error:e.error||null,location:e.location}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location?{error:e.error||null,location:e.location}:{error:e.error||t.error,location:t.location}}render(){return this.state.error?f.createElement(ca,{error:this.state.error,isOutsideRemixApp:!0}):this.props.children}};function ca({error:e,isOutsideRemixApp:t}){console.error(e);let r=f.createElement("script",{dangerouslySetInnerHTML:{__html:`
|
|
23
|
-
console.log(
|
|
24
|
-
"💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information."
|
|
25
|
-
);
|
|
26
|
-
`}});if(We(e))return f.createElement(hr,{title:"Unhandled Thrown Response!"},f.createElement("h1",{style:{fontSize:"24px"}},e.status," ",e.statusText),r);let n;if(e instanceof Error)n=e;else{let a=e==null?"Unknown Error":typeof e=="object"&&"toString"in e?e.toString():JSON.stringify(e);n=new Error(a)}return f.createElement(hr,{title:"Application Error!",isOutsideRemixApp:t},f.createElement("h1",{style:{fontSize:"24px"}},"Application Error"),f.createElement("pre",{style:{padding:"2rem",background:"hsla(10, 50%, 50%, 0.1)",color:"red",overflow:"auto"}},n.stack),r)}function hr({title:e,renderScripts:t,isOutsideRemixApp:r,children:n}){let{routeModules:a}=et();return a.root?.Layout&&!r?n:f.createElement("html",{lang:"en"},f.createElement("head",null,f.createElement("meta",{charSet:"utf-8"}),f.createElement("meta",{name:"viewport",content:"width=device-width,initial-scale=1,viewport-fit=cover"}),f.createElement("title",null,e)),f.createElement("body",null,f.createElement("main",{style:{fontFamily:"system-ui, sans-serif",padding:"2rem"}},n,t?f.createElement(jl,null):null)))}var da=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{da&&(window.__reactRouterVersion="7.10.1")}catch{}var fa=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ha=f.forwardRef(function({onClick:t,discover:r="render",prefetch:n="none",relative:a,reloadDocument:o,replace:i,state:l,target:s,to:u,preventScrollReset:h,viewTransition:c,...y},g){let{basename:E,unstable_useTransitions:P}=f.useContext(Re),R=typeof u=="string"&&fa.test(u),x,b=!1;if(typeof u=="string"&&R&&(x=u,da))try{let G=new URL(window.location.href),H=u.startsWith("//")?new URL(G.protocol+u):new URL(u),se=Ee(H.pathname,E);H.origin===G.origin&&se!=null?u=se+H.search+H.hash:b=!0}catch{ie(!1,`<Link to="${u}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let T=ti(u,{relative:a}),[D,M,_]=Nl(n,y),m=Wl(u,{replace:i,state:l,target:s,preventScrollReset:h,relative:a,viewTransition:c,unstable_useTransitions:P});function W(G){t&&t(G),G.defaultPrevented||m(G)}let Y=f.createElement("a",{...y,..._,href:x||T,onClick:b||o?t:W,ref:Hl(g,M),target:s,"data-discover":!R&&r==="render"?"true":void 0});return D&&!R?f.createElement(f.Fragment,null,Y,f.createElement(ua,{page:T})):Y});ha.displayName="Link";var zl=f.forwardRef(function({"aria-current":t="page",caseSensitive:r=!1,className:n="",end:a=!1,style:o,to:i,viewTransition:l,children:s,...u},h){let c=pt(i,{relative:u.relative}),y=Ce(),g=f.useContext(Qe),{navigator:E,basename:P}=f.useContext(Re),R=g!=null&&Xl(c)&&l===!0,x=E.encodeLocation?E.encodeLocation(c).pathname:c.pathname,b=y.pathname,T=g&&g.navigation&&g.navigation.location?g.navigation.location.pathname:null;r||(b=b.toLowerCase(),T=T?T.toLowerCase():null,x=x.toLowerCase()),T&&P&&(T=Ee(T,P)||T);const D=x!=="/"&&x.endsWith("/")?x.length-1:x.length;let M=b===x||!a&&b.startsWith(x)&&b.charAt(D)==="/",_=T!=null&&(T===x||!a&&T.startsWith(x)&&T.charAt(x.length)==="/"),m={isActive:M,isPending:_,isTransitioning:R},W=M?t:void 0,Y;typeof n=="function"?Y=n(m):Y=[n,M?"active":null,_?"pending":null,R?"transitioning":null].filter(Boolean).join(" ");let G=typeof o=="function"?o(m):o;return f.createElement(ha,{...u,"aria-current":W,className:Y,ref:h,style:G,to:i,viewTransition:l},typeof s=="function"?s(m):s)});zl.displayName="NavLink";var ma=f.forwardRef(({discover:e="render",fetcherKey:t,navigate:r,reloadDocument:n,replace:a,state:o,method:i=Dt,action:l,onSubmit:s,relative:u,preventScrollReset:h,viewTransition:c,...y},g)=>{let{unstable_useTransitions:E}=f.useContext(Re),P=va(),R=Jl(l,{relative:u}),x=i.toLowerCase()==="get"?"get":"post",b=typeof l=="string"&&fa.test(l),T=D=>{if(s&&s(D),D.defaultPrevented)return;D.preventDefault();let M=D.nativeEvent.submitter,_=M?.getAttribute("formmethod")||i,m=()=>P(M||D.currentTarget,{fetcherKey:t,method:_,navigate:r,replace:a,state:o,relative:u,preventScrollReset:h,viewTransition:c});E&&r!==!1?f.startTransition(()=>m()):m()};return f.createElement("form",{ref:g,method:x,action:R,onSubmit:n?s:T,...y,"data-discover":!b&&e==="render"?"true":void 0})});ma.displayName="Form";function Bl({getKey:e,storageKey:t,...r}){let n=f.useContext(Ht),{basename:a}=f.useContext(Re),o=Ce(),i=Cr();Gl({getKey:e,storageKey:t});let l=f.useMemo(()=>{if(!n||!e)return null;let u=pr(o,i,a,e);return u!==o.key?u:null},[]);if(!n||n.isSpaMode)return null;let s=((u,h)=>{if(!window.history.state||!window.history.state.key){let c=Math.random().toString(32).slice(2);window.history.replaceState({key:c},"")}try{let y=JSON.parse(sessionStorage.getItem(u)||"{}")[h||window.history.state.key];typeof y=="number"&&window.scrollTo(0,y)}catch(c){console.error(c),sessionStorage.removeItem(u)}}).toString();return f.createElement("script",{...r,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${s})(${JSON.stringify(t||mr)}, ${JSON.stringify(l)})`}})}Bl.displayName="ScrollRestoration";function pa(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function zt(e){let t=f.useContext(Ve);return B(t,pa(e)),t}function ya(e){let t=f.useContext(Qe);return B(t,pa(e)),t}function Wl(e,{target:t,replace:r,state:n,preventScrollReset:a,relative:o,viewTransition:i,unstable_useTransitions:l}={}){let s=Vn(),u=Ce(),h=pt(e,{relative:o});return f.useCallback(c=>{if(Di(c,t)){c.preventDefault();let y=r!==void 0?r:Me(u)===Me(h),g=()=>s(e,{replace:y,state:n,preventScrollReset:a,relative:o,viewTransition:i});l?f.startTransition(()=>g()):g()}},[u,s,h,r,n,t,e,a,o,i,l])}function ms(e){ie(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=f.useRef(cr(e)),r=f.useRef(!1),n=Ce(),a=f.useMemo(()=>_i(n.search,r.current?null:t.current),[n.search]),o=Vn(),i=f.useCallback((l,s)=>{const u=cr(typeof l=="function"?l(new URLSearchParams(a)):l);r.current=!0,o("?"+u,s)},[o,a]);return[a,i]}var Yl=0,Vl=()=>`__${String(++Yl)}__`;function va(){let{router:e}=zt("useSubmit"),{basename:t}=f.useContext(Re),r=hi(),n=e.fetch,a=e.navigate;return f.useCallback(async(o,i={})=>{let{action:l,method:s,encType:u,formData:h,body:c}=Ni(o,t);if(i.navigate===!1){let y=i.fetcherKey||Vl();await n(y,r,i.action||l,{preventScrollReset:i.preventScrollReset,formData:h,body:c,formMethod:i.method||s,formEncType:i.encType||u,flushSync:i.flushSync})}else await a(i.action||l,{preventScrollReset:i.preventScrollReset,formData:h,body:c,formMethod:i.method||s,formEncType:i.encType||u,replace:i.replace,state:i.state,fromRouteId:r,flushSync:i.flushSync,viewTransition:i.viewTransition})},[n,a,t,r])}function Jl(e,{relative:t}={}){let{basename:r}=f.useContext(Re),n=f.useContext(xe);B(n,"useFormAction must be used inside a RouteContext");let[a]=n.matches.slice(-1),o={...pt(e||".",{relative:t})},i=Ce();if(e==null){o.search=i.search;let l=new URLSearchParams(o.search),s=l.getAll("index");if(s.some(h=>h==="")){l.delete("index"),s.filter(c=>c).forEach(c=>l.append("index",c));let h=l.toString();o.search=h?`?${h}`:""}}return(!e||e===".")&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,"?index&"):"?index"),r!=="/"&&(o.pathname=o.pathname==="/"?r:Le([r,o.pathname])),Me(o)}function ps({key:e}={}){let{router:t}=zt("useFetcher"),r=ya("useFetcher"),n=f.useContext(br),a=f.useContext(xe),o=a.matches[a.matches.length-1]?.route.id;B(n,"useFetcher must be used inside a FetchersContext"),B(a,"useFetcher must be used inside a RouteContext"),B(o!=null,'useFetcher can only be used on routes that contain a unique "id"');let i=f.useId(),[l,s]=f.useState(e||i);e&&e!==l&&s(e);let{deleteFetcher:u,getFetcher:h,resetFetcher:c,fetch:y}=t;f.useEffect(()=>(h(l),()=>u(l)),[u,h,l]);let g=f.useCallback(async(M,_)=>{B(o,"No routeId available for fetcher.load()"),await y(l,o,M,_)},[l,o,y]),E=va(),P=f.useCallback(async(M,_)=>{await E(M,{..._,navigate:!1,fetcherKey:l})},[l,E]),R=f.useCallback(M=>c(l,M),[c,l]),x=f.useMemo(()=>{let M=f.forwardRef((_,m)=>f.createElement(ma,{..._,navigate:!1,fetcherKey:l,ref:m}));return M.displayName="fetcher.Form",M},[l]),b=r.fetchers.get(l)||In,T=n.get(l);return f.useMemo(()=>({Form:x,submit:P,load:g,reset:R,...b,data:T}),[x,P,g,R,b,T])}var mr="react-router-scroll-positions",Mt={};function pr(e,t,r,n){let a=null;return n&&(r!=="/"?a=n({...e,pathname:Ee(e.pathname,r)||e.pathname},t):a=n(e,t)),a==null&&(a=e.key),a}function Gl({getKey:e,storageKey:t}={}){let{router:r}=zt("useScrollRestoration"),{restoreScrollPosition:n,preventScrollReset:a}=ya("useScrollRestoration"),{basename:o}=f.useContext(Re),i=Ce(),l=Cr(),s=mi();f.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Kl(f.useCallback(()=>{if(s.state==="idle"){let u=pr(i,l,o,e);Mt[u]=window.scrollY}try{sessionStorage.setItem(t||mr,JSON.stringify(Mt))}catch(u){ie(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${u}).`)}window.history.scrollRestoration="auto"},[s.state,e,o,i,l,t])),typeof document<"u"&&(f.useLayoutEffect(()=>{try{let u=sessionStorage.getItem(t||mr);u&&(Mt=JSON.parse(u))}catch{}},[t]),f.useLayoutEffect(()=>{let u=r?.enableScrollRestoration(Mt,()=>window.scrollY,e?(h,c)=>pr(h,c,o,e):void 0);return()=>u&&u()},[r,o,e]),f.useLayoutEffect(()=>{if(n!==!1){if(typeof n=="number"){window.scrollTo(0,n);return}try{if(i.hash){let u=document.getElementById(decodeURIComponent(i.hash.slice(1)));if(u){u.scrollIntoView();return}}}catch{ie(!1,`"${i.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[i,n,a]))}function Kl(e,t){let{capture:r}={};f.useEffect(()=>{let n=r!=null?{capture:r}:void 0;return window.addEventListener("pagehide",e,n),()=>{window.removeEventListener("pagehide",e,n)}},[e,r])}function Xl(e,{relative:t}={}){let r=f.useContext(Rr);B(r!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:n}=zt("useViewTransitionState"),a=pt(e,{relative:t});if(!r.isTransitioning)return!1;let o=Ee(r.currentLocation.pathname,n)||r.currentLocation.pathname,i=Ee(r.nextLocation.pathname,n)||r.nextLocation.pathname;return At(a.pathname,i)!=null||At(a.pathname,o)!=null}export{rs as A,ns as B,ds as C,jl as D,Ye as E,Ht as F,ql as G,ka as H,Ia as I,ha as L,fs as M,il as N,os as O,Ua as R,Bl as S,Vn as a,ps as b,yi as c,ts as d,Ce as e,ms as f,ja as g,oi as h,We as i,Ql as j,B as k,cs as l,Ae as m,hs as n,as as o,pl as p,Mr as q,f as r,Ll as s,es as t,pi as u,us as v,is as w,ls as x,Zl as y,ss as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c}from"./createLucideIcon-YR8jjAlu.js";const e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],r=c("circle-check",e);export{r as C};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as s}from"./chunk-WWGJGFF6-CbVoyx1U.js";const C=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),w=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,o)=>o?o.toUpperCase():r.toLowerCase()),i=t=>{const e=w(t);return e.charAt(0).toUpperCase()+e.slice(1)},l=(...t)=>t.filter((e,r,o)=>!!e&&e.trim()!==""&&o.indexOf(e)===r).join(" ").trim(),f=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0};var h={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const g=s.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:r=2,absoluteStrokeWidth:o,className:n="",children:a,iconNode:u,...c},p)=>s.createElement("svg",{ref:p,...h,width:e,height:e,stroke:t,strokeWidth:o?Number(r)*24/Number(e):r,className:l("lucide",n),...!a&&!f(c)&&{"aria-hidden":"true"},...c},[...u.map(([m,d])=>s.createElement(m,d)),...Array.isArray(a)?a:[a]]));const b=(t,e)=>{const r=s.forwardRef(({className:o,...n},a)=>s.createElement(g,{ref:a,iconNode:e,className:l(`lucide-${C(i(t))}`,`lucide-${t}`,o),...n}));return r.displayName=i(t),r};export{b as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{w as t,b as r,j as e}from"./chunk-WWGJGFF6-CbVoyx1U.js";import{S as i}from"./ScenarioViewer-d_TBk4GQ.js";import{W as n}from"./InteractivePreview-WgwC1GfJ.js";import"./LogViewer-BYnfxbUG.js";import"./SafeScreenshot-lHVhvsu_.js";import"./useLastLogLine-3pmpUQB-.js";import"./ReportIssueModal-_lBPJCzG.js";import"./createLucideIcon-YR8jjAlu.js";import"./circle-check-D1VOYveA.js";import"./triangle-alert-B2VUcygF.js";import"./index-DCG-vks0.js";const u=()=>[{title:"Empty State - CodeYam"},{name:"description",content:"Simulations empty state development view"}],v=t(function(){r();const s={sha:"mock-sha",name:"Dashboard",filePath:"codeyam-cli/src/webserver/app/routes/_index.tsx",entityType:"visual"};return e.jsx(n,{children:e.jsxs("div",{className:"h-screen bg-[#f9f9f9] flex flex-col overflow-hidden",children:[e.jsx("header",{className:"bg-white border-b border-gray-200 shrink-0 relative h-[54px]",children:e.jsxs("div",{className:"flex items-center h-full px-6 gap-6",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("svg",{width:"17",height:"17",viewBox:"0 0 17 17",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M13 8.5H4M4 8.5L8.5 4M4 8.5L8.5 13",stroke:"#005c75",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),e.jsx("h1",{className:"text-lg font-semibold text-black m-0 leading-[26px] shrink-0",children:"Dashboard"}),e.jsx("span",{className:"text-xs text-[#626262] font-mono whitespace-nowrap overflow-hidden text-ellipsis min-w-0",children:"codeyam-cli/src/webserver/app/routes/_index.tsx"})]}),e.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-2 px-[15px] py-0 h-[26px] bg-[#efefef] border border-[#e1e1e1] rounded",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-[#626262]"}),e.jsx("span",{className:"text-xs font-semibold text-[#626262]",children:"Not analyzed"})]}),e.jsx("button",{className:"px-[15px] py-0 h-[26px] bg-[#005c75] text-white rounded text-xs font-semibold border-none cursor-pointer hover:bg-[#004a5e] transition-colors",children:"Analyze"})]}),e.jsxs("div",{className:"flex items-center gap-1 text-[10px] text-[#626262] ml-auto",children:[e.jsx("span",{className:"leading-[22px]",children:"Next Entity"}),e.jsx("svg",{width:"17",height:"17",viewBox:"0 0 17 17",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M4 8.5H13M13 8.5L8.5 4M13 8.5L8.5 13",stroke:"#005c75",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})}),e.jsx("div",{className:"bg-[#efefef] border-b border-[#efefef] shrink-0",children:e.jsxs("div",{className:"flex items-center gap-3 h-11 px-[15px]",children:[e.jsxs("div",{className:"px-4 flex items-center justify-center gap-3 shrink-0 text-sm rounded bg-[#343434] text-[#efefef] font-semibold h-8",children:["Scenarios",e.jsx("span",{className:"px-2 py-0.5 rounded-[9px] text-xs font-semibold bg-[#cbf3fa] text-[#005c75] min-w-[25px] text-center",children:"0"})]}),e.jsxs("div",{className:"px-4 flex items-center justify-center gap-3 shrink-0 text-sm rounded-[9px] text-[#3e3e3e] font-normal",children:["Related Entities",e.jsx("span",{className:"px-2 py-0.5 rounded-[9px] text-xs font-semibold bg-[#e1e1e1] text-[#3e3e3e] min-w-[25px] text-center",children:"5"})]}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"Code"}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"Data Structure"}),e.jsx("div",{className:"px-4 shrink-0 text-sm text-[#3e3e3e] font-normal",children:"History"})]})}),e.jsxs("div",{className:"flex flex-1 gap-0 min-h-0",children:[e.jsx("div",{className:"w-[165px] bg-[#e1e1e1] border-r border-[#c7c7c7] flex items-center justify-center shrink-0",children:e.jsx("span",{className:"text-xs font-medium text-[#8e8e8e] leading-5",children:"No Scenarios"})}),e.jsx(i,{selectedScenario:null,analysis:void 0,entity:s,viewMode:"screenshot",cacheBuster:Date.now(),hasScenarios:!1,isAnalyzing:!1,projectSlug:null,hasAnApiKey:!0})]})]})})});export{v as default,u as meta};
|