@superblocksteam/vite-plugin-file-sync 2.0.55 → 2.0.56-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +394 -2303
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.js +34 -35
- package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +2 -8
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js +17 -46
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +0 -1
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js +4 -25
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/state.js +1 -1
- package/dist/ai-service/agent/subagents/apis/state.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +1 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.js +134 -173
- package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/types.d.ts +1 -4
- package/dist/ai-service/agent/subagents/apis/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +14 -31
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -6
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +12 -21
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +2 -6
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.js +29 -20
- package/dist/ai-service/agent/tools/apis/finalize-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.js +4 -9
- package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts +7 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +43 -8
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.js +7 -9
- package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-files.d.ts +2 -0
- package/dist/ai-service/agent/tools/build-read-files.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-files.js +18 -18
- package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
- package/dist/ai-service/agent/tools/build-rename-file.d.ts +11 -0
- package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-rename-file.js +103 -0
- package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts +0 -1
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.js +0 -6
- package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-write-file.js +5 -6
- package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +0 -10
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +0 -10
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.d.ts +1 -7
- package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.js +9 -29
- package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +5 -11
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +1 -2
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +89 -67
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts +4 -0
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js +19 -0
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/glob.js +15 -6
- package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +13 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +21 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/index.d.ts +1 -0
- package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/index.js +1 -0
- package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts +10 -0
- package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/ls.js +71 -0
- package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -0
- package/dist/ai-service/agent/utils.d.ts +0 -35
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +0 -132
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/file-system-interface.d.ts +1 -1
- package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
- package/dist/ai-service/app-interface/file-system-interface.js +2 -2
- package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +5 -0
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +60 -0
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +8 -1
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.d.ts +2 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.d.ts.map +1 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.js +1 -0
- package/dist/ai-service/clark-provider/clark-chat-settings.js.map +1 -1
- package/dist/ai-service/const.d.ts +3 -7
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +2 -6
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/context/app-context.d.ts +2 -1
- package/dist/ai-service/context/app-context.d.ts.map +1 -1
- package/dist/ai-service/context/app-context.js +9 -15
- package/dist/ai-service/context/app-context.js.map +1 -1
- package/dist/ai-service/index.d.ts +4 -4
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +168 -16
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/anthropic.js +1 -0
- package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +1 -0
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +1 -0
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/types.d.ts +1 -1
- package/dist/ai-service/llm/types.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/types.d.ts +0 -2
- package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
- package/dist/ai-service/prompts/explain-code.d.ts +7 -0
- package/dist/ai-service/prompts/explain-code.d.ts.map +1 -0
- package/dist/ai-service/prompts/explain-code.js +23 -0
- package/dist/ai-service/prompts/explain-code.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +0 -2
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +16 -16
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +39 -4
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +1 -0
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +0 -7
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +0 -8
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +0 -15
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +0 -13
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
- package/dist/ai-service/types.d.ts +2 -2
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/util/json-stream-parser.d.ts +20 -0
- package/dist/ai-service/util/json-stream-parser.d.ts.map +1 -0
- package/dist/ai-service/util/json-stream-parser.js +139 -0
- package/dist/ai-service/util/json-stream-parser.js.map +1 -0
- package/dist/binding-extraction/extract-identifiers.d.ts +1 -5
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +78 -15
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/binding-extraction/index.d.ts +1 -1
- package/dist/binding-extraction/index.d.ts.map +1 -1
- package/dist/binding-extraction/index.js +1 -1
- package/dist/binding-extraction/index.js.map +1 -1
- package/dist/binding-extraction/{extract-js-identifiers.d.ts → js-identifiers.d.ts} +2 -1
- package/dist/binding-extraction/js-identifiers.d.ts.map +1 -0
- package/dist/binding-extraction/{extract-js-identifiers.js → js-identifiers.js} +81 -1
- package/dist/binding-extraction/js-identifiers.js.map +1 -0
- package/dist/binding-extraction/python-identifiers.d.ts +13 -0
- package/dist/binding-extraction/python-identifiers.d.ts.map +1 -0
- package/dist/binding-extraction/{extract-py-identifiers.js → python-identifiers.js} +155 -1
- package/dist/binding-extraction/python-identifiers.js.map +1 -0
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +9 -15
- package/dist/codegen.js.map +1 -1
- package/dist/components-manager.d.ts +12 -13
- package/dist/components-manager.d.ts.map +1 -1
- package/dist/components-manager.js +78 -139
- package/dist/components-manager.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +164 -326
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +2 -2
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +6 -4
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/file-system-manager.d.ts +7 -33
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +185 -594
- package/dist/file-system-manager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/inject-no-select.d.ts +15 -0
- package/dist/inject-no-select.d.ts.map +1 -0
- package/dist/inject-no-select.js +173 -0
- package/dist/inject-no-select.js.map +1 -0
- package/dist/injected-index.d.ts +0 -1
- package/dist/injected-index.d.ts.map +1 -1
- package/dist/injected-index.js +0 -1
- package/dist/injected-index.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts.map +1 -1
- package/dist/lock-service/activity-tracker.js +4 -1
- package/dist/lock-service/activity-tracker.js.map +1 -1
- package/dist/parsing/entity/to-code-entity.d.ts.map +1 -1
- package/dist/parsing/entity/to-code-entity.js +3 -4
- package/dist/parsing/entity/to-code-entity.js.map +1 -1
- package/dist/parsing/entity/to-value-entity.d.ts.map +1 -1
- package/dist/parsing/entity/to-value-entity.js +19 -13
- package/dist/parsing/entity/to-value-entity.js.map +1 -1
- package/dist/parsing/ids.d.ts +0 -1
- package/dist/parsing/ids.d.ts.map +1 -1
- package/dist/parsing/ids.js +3 -4
- package/dist/parsing/ids.js.map +1 -1
- package/dist/parsing/imports.d.ts.map +1 -1
- package/dist/parsing/imports.js +0 -10
- package/dist/parsing/imports.js.map +1 -1
- package/dist/parsing/index.d.ts +0 -1
- package/dist/parsing/index.d.ts.map +1 -1
- package/dist/parsing/index.js +0 -1
- package/dist/parsing/index.js.map +1 -1
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +50 -22
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/parsing/page.d.ts +0 -1
- package/dist/parsing/page.d.ts.map +1 -1
- package/dist/parsing/page.js +55 -32
- package/dist/parsing/page.js.map +1 -1
- package/dist/parsing/properties.d.ts.map +1 -1
- package/dist/parsing/properties.js +45 -15
- package/dist/parsing/properties.js.map +1 -1
- package/dist/parsing/template/index.js +1 -1
- package/dist/parsing/template/index.js.map +1 -1
- package/dist/parsing/template/to-code-template.d.ts +1 -2
- package/dist/parsing/template/to-code-template.d.ts.map +1 -1
- package/dist/parsing/template/to-code-template.js +2 -3
- package/dist/parsing/template/to-code-template.js.map +1 -1
- package/dist/parsing/type-parsing-registry.d.ts +0 -1
- package/dist/parsing/type-parsing-registry.d.ts.map +1 -1
- package/dist/parsing/type-parsing-registry.js +0 -2
- package/dist/parsing/type-parsing-registry.js.map +1 -1
- package/dist/parsing/util.d.ts.map +1 -1
- package/dist/parsing/util.js +22 -5
- package/dist/parsing/util.js.map +1 -1
- package/dist/plugin-options.d.ts +8 -1
- package/dist/plugin-options.d.ts.map +1 -1
- package/dist/plugin-options.js.map +1 -1
- package/dist/refactor/javascript.js +1 -1
- package/dist/refactor/javascript.js.map +1 -1
- package/dist/rename-manager.d.ts.map +1 -1
- package/dist/rename-manager.js +1 -2
- package/dist/rename-manager.js.map +1 -1
- package/dist/router-parser.d.ts +35 -0
- package/dist/router-parser.d.ts.map +1 -0
- package/dist/router-parser.js +490 -0
- package/dist/router-parser.js.map +1 -0
- package/dist/socket-manager.d.ts +3 -3
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +14 -15
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts +9 -77
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +83 -374
- package/dist/source-tracker.js.map +1 -1
- package/dist/util/operation-queue.d.ts +3 -0
- package/dist/util/operation-queue.d.ts.map +1 -1
- package/dist/util/operation-queue.js +5 -0
- package/dist/util/operation-queue.js.map +1 -1
- package/dist/util.d.ts +13 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +49 -28
- package/dist/util.js.map +1 -1
- package/dist/vite-plugin-yaml-types.d.ts +9 -0
- package/dist/vite-plugin-yaml-types.d.ts.map +1 -0
- package/dist/vite-plugin-yaml-types.js +114 -0
- package/dist/vite-plugin-yaml-types.js.map +1 -0
- package/package.json +8 -7
- package/dist/ai-service/agent/tools/build-add-event.d.ts +0 -14
- package/dist/ai-service/agent/tools/build-add-event.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-add-event.js +0 -44
- package/dist/ai-service/agent/tools/build-add-event.js.map +0 -1
- package/dist/ai-service/agent/tools/build-add-state-var.d.ts +0 -16
- package/dist/ai-service/agent/tools/build-add-state-var.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-add-state-var.js +0 -62
- package/dist/ai-service/agent/tools/build-add-state-var.js.map +0 -1
- package/dist/ai-service/agent/tools/build-add-timer.d.ts +0 -16
- package/dist/ai-service/agent/tools/build-add-timer.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-add-timer.js +0 -46
- package/dist/ai-service/agent/tools/build-add-timer.js.map +0 -1
- package/dist/ai-service/agent/tools/build-create-page.d.ts +0 -10
- package/dist/ai-service/agent/tools/build-create-page.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-create-page.js +0 -57
- package/dist/ai-service/agent/tools/build-create-page.js.map +0 -1
- package/dist/ai-service/agent/tools/build-list-available-components.d.ts +0 -9
- package/dist/ai-service/agent/tools/build-list-available-components.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-list-available-components.js +0 -55
- package/dist/ai-service/agent/tools/build-list-available-components.js.map +0 -1
- package/dist/ai-service/agent/tools/build-register-component-name.d.ts +0 -9
- package/dist/ai-service/agent/tools/build-register-component-name.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-register-component-name.js +0 -53
- package/dist/ai-service/agent/tools/build-register-component-name.js.map +0 -1
- package/dist/ai-service/agent/tools/build-rename-page.d.ts +0 -9
- package/dist/ai-service/agent/tools/build-rename-page.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-rename-page.js +0 -50
- package/dist/ai-service/agent/tools/build-rename-page.js.map +0 -1
- package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts +0 -25
- package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-set-api-triggers.js +0 -266
- package/dist/ai-service/agent/tools/build-set-api-triggers.js.map +0 -1
- package/dist/ai-service/agent/tools/build-update-state-var.d.ts +0 -16
- package/dist/ai-service/agent/tools/build-update-state-var.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-update-state-var.js +0 -67
- package/dist/ai-service/agent/tools/build-update-state-var.js.map +0 -1
- package/dist/ai-service/agent/tools/study-current-app-state.d.ts +0 -20
- package/dist/ai-service/agent/tools/study-current-app-state.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/study-current-app-state.js +0 -20
- package/dist/ai-service/agent/tools/study-current-app-state.js.map +0 -1
- package/dist/binding-extraction/extract-js-identifiers.d.ts.map +0 -1
- package/dist/binding-extraction/extract-js-identifiers.js.map +0 -1
- package/dist/binding-extraction/extract-py-identifiers.d.ts +0 -4
- package/dist/binding-extraction/extract-py-identifiers.d.ts.map +0 -1
- package/dist/binding-extraction/extract-py-identifiers.js.map +0 -1
- package/dist/component-docs-service/index.d.ts +0 -37
- package/dist/component-docs-service/index.d.ts.map +0 -1
- package/dist/component-docs-service/index.js +0 -118
- package/dist/component-docs-service/index.js.map +0 -1
- package/dist/parsing/events/index.d.ts +0 -5
- package/dist/parsing/events/index.d.ts.map +0 -1
- package/dist/parsing/events/index.js +0 -7
- package/dist/parsing/events/index.js.map +0 -1
- package/dist/parsing/events/to-code-events.d.ts +0 -3
- package/dist/parsing/events/to-code-events.d.ts.map +0 -1
- package/dist/parsing/events/to-code-events.js +0 -147
- package/dist/parsing/events/to-code-events.js.map +0 -1
- package/dist/parsing/events/to-value-events.d.ts +0 -10
- package/dist/parsing/events/to-value-events.d.ts.map +0 -1
- package/dist/parsing/events/to-value-events.js +0 -473
- package/dist/parsing/events/to-value-events.js.map +0 -1
- package/dist/parsing/scope.d.ts +0 -103
- package/dist/parsing/scope.d.ts.map +0 -1
- package/dist/parsing/scope.js +0 -902
- package/dist/parsing/scope.js.map +0 -1
- package/dist/routing.d.ts +0 -6
- package/dist/routing.d.ts.map +0 -1
- package/dist/routing.js +0 -169
- package/dist/routing.js.map +0 -1
- package/dist/sb-scope-manager.d.ts +0 -121
- package/dist/sb-scope-manager.d.ts.map +0 -1
- package/dist/sb-scope-manager.js +0 -678
- package/dist/sb-scope-manager.js.map +0 -1
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
import { readFile, access, stat, readdir } from "node:fs/promises";
|
|
2
|
+
import { join, resolve, dirname, relative } from "node:path";
|
|
3
|
+
import { parse } from "@babel/parser";
|
|
4
|
+
import { findStaticImports, parseStaticImport } from "mlly";
|
|
5
|
+
import { joinURL } from "ufo";
|
|
6
|
+
import { traverse } from "./traverse.js";
|
|
7
|
+
import { getLogger } from "./util/logger.js";
|
|
8
|
+
const CONVENTIONAL_ROUTER_PATHS = [
|
|
9
|
+
"router.tsx",
|
|
10
|
+
"router.ts",
|
|
11
|
+
"src/router.tsx",
|
|
12
|
+
"src/router.ts",
|
|
13
|
+
];
|
|
14
|
+
let cachedRouterFileLocation = null;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a .js import path to the actual source file (.ts, .tsx, .jsx)
|
|
17
|
+
*
|
|
18
|
+
* In development, imports may reference .js files but the actual source files
|
|
19
|
+
* have TypeScript extensions. This function tries to find the actual source file.
|
|
20
|
+
*/
|
|
21
|
+
async function resolveSourceFile(jsPath) {
|
|
22
|
+
// If the file exists as-is, return it
|
|
23
|
+
try {
|
|
24
|
+
await access(jsPath);
|
|
25
|
+
return jsPath;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// File doesn't exist, try TypeScript variants
|
|
29
|
+
}
|
|
30
|
+
// Try different extensions
|
|
31
|
+
const extensions = [".ts", ".tsx", ".jsx"];
|
|
32
|
+
const pathWithoutExt = jsPath.replace(/\.js$/, "");
|
|
33
|
+
for (const ext of extensions) {
|
|
34
|
+
const tsPath = pathWithoutExt + ext;
|
|
35
|
+
try {
|
|
36
|
+
await access(tsPath);
|
|
37
|
+
return tsPath;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Try next extension
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// If none found, return original path (will error later)
|
|
44
|
+
return jsPath;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract local names that refer to createBrowserRouter from react-router imports
|
|
48
|
+
* Handles import aliasing like: import { createBrowserRouter as createRouter } from "react-router"
|
|
49
|
+
*/
|
|
50
|
+
function extractReactRouterImports(content) {
|
|
51
|
+
const createBrowserRouterAliases = new Set();
|
|
52
|
+
const namespaceImports = new Set();
|
|
53
|
+
try {
|
|
54
|
+
// find the react-router import statement
|
|
55
|
+
const reactRouterImport = findStaticImports(content).find((x) => x.specifier === "react-router");
|
|
56
|
+
if (!reactRouterImport) {
|
|
57
|
+
throw new Error("react-router import not found");
|
|
58
|
+
}
|
|
59
|
+
const parsedReactRouterImport = parseStaticImport(reactRouterImport);
|
|
60
|
+
// loop over named imports
|
|
61
|
+
if (parsedReactRouterImport.namedImports) {
|
|
62
|
+
// for each named import
|
|
63
|
+
for (const [name, alias] of Object.entries(parsedReactRouterImport.namedImports)) {
|
|
64
|
+
// add either the name or the alias (eg. import { createBrowserRouter as createRouter } from 'react-router') to the set
|
|
65
|
+
if (name === "createBrowserRouter") {
|
|
66
|
+
createBrowserRouterAliases.add(name === alias ? name : alias);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (parsedReactRouterImport.namespacedImport) {
|
|
71
|
+
namespaceImports.add(parsedReactRouterImport.namespacedImport);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
getLogger().debug(`Error extracting react-router imports: ${e}`);
|
|
76
|
+
}
|
|
77
|
+
return { createBrowserRouterAliases, namespaceImports };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if content contains createBrowserRouter call, accounting for import aliases
|
|
81
|
+
*/
|
|
82
|
+
function hasCreateBrowserRouter(content) {
|
|
83
|
+
const { createBrowserRouterAliases, namespaceImports } = extractReactRouterImports(content);
|
|
84
|
+
// Quick substring check first for performance
|
|
85
|
+
if (!content.includes("createBrowserRouter") &&
|
|
86
|
+
createBrowserRouterAliases.size === 0 &&
|
|
87
|
+
namespaceImports.size === 0) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const ast = parse(content, {
|
|
92
|
+
sourceType: "module",
|
|
93
|
+
plugins: ["typescript", "jsx"],
|
|
94
|
+
});
|
|
95
|
+
let found = false;
|
|
96
|
+
traverse(ast, {
|
|
97
|
+
CallExpression(path) {
|
|
98
|
+
const node = path.node;
|
|
99
|
+
// Check for direct call: createBrowserRouter() or alias()
|
|
100
|
+
if (node.callee.type === "Identifier") {
|
|
101
|
+
if (createBrowserRouterAliases.has(node.callee.name)) {
|
|
102
|
+
found = true;
|
|
103
|
+
path.stop();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Check for namespace call: ReactRouter.createBrowserRouter()
|
|
107
|
+
else if (node.callee.type === "MemberExpression") {
|
|
108
|
+
if (node.callee.object.type === "Identifier" &&
|
|
109
|
+
namespaceImports.has(node.callee.object.name) &&
|
|
110
|
+
node.callee.property.type === "Identifier" &&
|
|
111
|
+
node.callee.property.name === "createBrowserRouter") {
|
|
112
|
+
found = true;
|
|
113
|
+
path.stop();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
return found;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// If parsing fails, fall back to substring check
|
|
122
|
+
return content.includes("createBrowserRouter");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Find all TypeScript/TSX files in rootDir
|
|
127
|
+
*/
|
|
128
|
+
async function findAllTsFiles(rootDir) {
|
|
129
|
+
const files = [];
|
|
130
|
+
async function scan(dir, depth = 0) {
|
|
131
|
+
// Limit depth to avoid deep recursion
|
|
132
|
+
if (depth > 3)
|
|
133
|
+
return;
|
|
134
|
+
try {
|
|
135
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
136
|
+
for (const entry of entries) {
|
|
137
|
+
const fullPath = join(dir, entry.name);
|
|
138
|
+
// Skip node_modules and hidden directories
|
|
139
|
+
if (entry.name === "node_modules" || entry.name.startsWith(".")) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (entry.isDirectory()) {
|
|
143
|
+
await scan(fullPath, depth + 1);
|
|
144
|
+
}
|
|
145
|
+
else if (entry.isFile() &&
|
|
146
|
+
(entry.name.endsWith(".ts") || entry.name.endsWith(".tsx"))) {
|
|
147
|
+
files.push(fullPath);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
// Ignore permission errors or missing directories
|
|
153
|
+
getLogger().debug(`Error scanning directory ${dir}: ${e}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
await scan(rootDir);
|
|
157
|
+
return files;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* React Router v7 Support
|
|
161
|
+
*
|
|
162
|
+
* This implementation parses createBrowserRouter route configurations to extract page components.
|
|
163
|
+
*
|
|
164
|
+
* Check the test file for supported route configurations.
|
|
165
|
+
*
|
|
166
|
+
* Import Aliasing:
|
|
167
|
+
* - Handles: import { createBrowserRouter as createRouter } from "react-router"
|
|
168
|
+
* - Handles: import * as ReactRouter from "react-router"
|
|
169
|
+
*
|
|
170
|
+
* Excluded Routes:
|
|
171
|
+
* - Catch-all routes with path: "*"
|
|
172
|
+
* - Routes with inline components (not imported from files)
|
|
173
|
+
* - Layout/wrapper components that aren't page components
|
|
174
|
+
*
|
|
175
|
+
* File Organization:
|
|
176
|
+
* - No assumptions about directory structure
|
|
177
|
+
* - Page components can be located anywhere in the project
|
|
178
|
+
* - Only imports with relative paths (starting with . or /) are tracked
|
|
179
|
+
*/
|
|
180
|
+
/**
|
|
181
|
+
* Find the router file in the project (React Router v7)
|
|
182
|
+
*/
|
|
183
|
+
export async function findRouterFile(rootDir) {
|
|
184
|
+
// Check cache first with mtime validation
|
|
185
|
+
if (cachedRouterFileLocation) {
|
|
186
|
+
try {
|
|
187
|
+
const stats = await stat(cachedRouterFileLocation.path);
|
|
188
|
+
if (stats.mtimeMs === cachedRouterFileLocation.mtime) {
|
|
189
|
+
return cachedRouterFileLocation.path;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
cachedRouterFileLocation = null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
cachedRouterFileLocation = null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Try conventional locations first
|
|
200
|
+
for (const conventionalPath of CONVENTIONAL_ROUTER_PATHS) {
|
|
201
|
+
const fullPath = join(rootDir, conventionalPath);
|
|
202
|
+
try {
|
|
203
|
+
await access(fullPath);
|
|
204
|
+
const content = await readFile(fullPath, "utf-8");
|
|
205
|
+
if (hasCreateBrowserRouter(content)) {
|
|
206
|
+
const stats = await stat(fullPath);
|
|
207
|
+
cachedRouterFileLocation = { path: fullPath, mtime: stats.mtimeMs };
|
|
208
|
+
getLogger().info(`Found router file at: ${conventionalPath}`);
|
|
209
|
+
return fullPath;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Fall back to scanning all TypeScript files in rootDir
|
|
217
|
+
getLogger().info("Router not found in conventional locations, scanning TypeScript files…");
|
|
218
|
+
const allTsFiles = await findAllTsFiles(rootDir);
|
|
219
|
+
for (const file of allTsFiles) {
|
|
220
|
+
try {
|
|
221
|
+
const content = await readFile(file, "utf-8");
|
|
222
|
+
if (hasCreateBrowserRouter(content)) {
|
|
223
|
+
const stats = await stat(file);
|
|
224
|
+
cachedRouterFileLocation = { path: file, mtime: stats.mtimeMs };
|
|
225
|
+
getLogger().info(`Found router file: ${relative(rootDir, file)}`);
|
|
226
|
+
return file;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
throw new Error("Could not find router file with createBrowserRouter in project");
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Extract all static imports
|
|
237
|
+
* Maps component identifier names to their import paths
|
|
238
|
+
* We track ALL imports because any import can be used as a page Component
|
|
239
|
+
*/
|
|
240
|
+
function extractAllImports(content) {
|
|
241
|
+
const imports = new Map();
|
|
242
|
+
try {
|
|
243
|
+
const staticImports = findStaticImports(content);
|
|
244
|
+
for (const staticImport of staticImports) {
|
|
245
|
+
const parsed = parseStaticImport(staticImport);
|
|
246
|
+
// Skip imports from node_modules and react-router
|
|
247
|
+
if (!parsed.specifier.startsWith(".") &&
|
|
248
|
+
!parsed.specifier.startsWith("/")) {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
// Handle default imports: import Page1 from "./components/Page1.tsx"
|
|
252
|
+
if (parsed.defaultImport) {
|
|
253
|
+
imports.set(parsed.defaultImport, parsed.specifier);
|
|
254
|
+
}
|
|
255
|
+
// Handle named imports: import { Page1 } from "./components/Page1.tsx"
|
|
256
|
+
if (parsed.namedImports) {
|
|
257
|
+
for (const [name, alias] of Object.entries(parsed.namedImports)) {
|
|
258
|
+
const localName = name === alias ? name : alias;
|
|
259
|
+
imports.set(localName, parsed.specifier);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
getLogger().debug(`Error extracting imports: ${e}`);
|
|
266
|
+
}
|
|
267
|
+
return imports;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Parse the router file to extract route definitions (React Router v7)
|
|
271
|
+
*/
|
|
272
|
+
export async function parseRouterFile(routerFilePath, rootDir) {
|
|
273
|
+
try {
|
|
274
|
+
const content = await readFile(routerFilePath, "utf-8");
|
|
275
|
+
const { createBrowserRouterAliases, namespaceImports } = extractReactRouterImports(content);
|
|
276
|
+
const allImports = extractAllImports(content);
|
|
277
|
+
const ast = parse(content, {
|
|
278
|
+
sourceType: "module",
|
|
279
|
+
plugins: ["typescript", "jsx"],
|
|
280
|
+
});
|
|
281
|
+
const routes = [];
|
|
282
|
+
let routesArray = null;
|
|
283
|
+
traverse(ast, {
|
|
284
|
+
CallExpression(astPath) {
|
|
285
|
+
const node = astPath.node;
|
|
286
|
+
let isCreateBrowserRouterCall = false;
|
|
287
|
+
// Check for direct call: createBrowserRouter() or alias()
|
|
288
|
+
if (node.callee.type === "Identifier") {
|
|
289
|
+
if (createBrowserRouterAliases.has(node.callee.name)) {
|
|
290
|
+
isCreateBrowserRouterCall = true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Check for namespace call: ReactRouter.createBrowserRouter()
|
|
294
|
+
else if (node.callee.type === "MemberExpression") {
|
|
295
|
+
if (node.callee.object.type === "Identifier" &&
|
|
296
|
+
namespaceImports.has(node.callee.object.name) &&
|
|
297
|
+
node.callee.property.type === "Identifier" &&
|
|
298
|
+
node.callee.property.name === "createBrowserRouter") {
|
|
299
|
+
isCreateBrowserRouterCall = true;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (isCreateBrowserRouterCall && node.arguments.length > 0) {
|
|
303
|
+
const firstArg = node.arguments[0];
|
|
304
|
+
if (firstArg?.type === "ArrayExpression") {
|
|
305
|
+
routesArray = firstArg;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
});
|
|
310
|
+
// Process routes asynchronously after traverse
|
|
311
|
+
if (routesArray) {
|
|
312
|
+
await extractRoutesFromArray(routesArray, routes, routerFilePath, rootDir, "", allImports);
|
|
313
|
+
}
|
|
314
|
+
return routes;
|
|
315
|
+
}
|
|
316
|
+
catch (e) {
|
|
317
|
+
getLogger().error(`Error parsing router file: ${e}`);
|
|
318
|
+
return [];
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
async function extractRoutesFromArray(node, routes, routerFilePath, rootDir, parentPath, allImports) {
|
|
322
|
+
for (const element of node.elements) {
|
|
323
|
+
if (element && element.type === "ObjectExpression") {
|
|
324
|
+
await extractRouteFromObject(element, routes, routerFilePath, rootDir, parentPath, allImports);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
async function extractRouteFromObject(node, routes, routerFilePath, rootDir, parentPath, allImports) {
|
|
329
|
+
let routePath = null;
|
|
330
|
+
let pageImportPath = null;
|
|
331
|
+
let children = null;
|
|
332
|
+
let hasIndex = false;
|
|
333
|
+
for (const prop of node.properties) {
|
|
334
|
+
if (prop.type !== "ObjectProperty")
|
|
335
|
+
continue;
|
|
336
|
+
const key = prop.key.type === "Identifier" ? prop.key.name : null;
|
|
337
|
+
if (key === "path" && prop.value.type === "StringLiteral") {
|
|
338
|
+
routePath = prop.value.value;
|
|
339
|
+
}
|
|
340
|
+
else if (key === "index" && prop.value.type === "BooleanLiteral") {
|
|
341
|
+
hasIndex = prop.value.value;
|
|
342
|
+
}
|
|
343
|
+
else if (key === "lazy" &&
|
|
344
|
+
prop.value.type === "ArrowFunctionExpression") {
|
|
345
|
+
// Extract import path from lazy function arrow expression
|
|
346
|
+
let body = prop.value.body;
|
|
347
|
+
// Case 1: Block statement body (async function with multiple statements)
|
|
348
|
+
// Examples:
|
|
349
|
+
// lazy: async () => { const { default: Component } = await import("./Page.tsx"); return { Component } }
|
|
350
|
+
// lazy: async () => { const mod = await import("./Page.tsx"); return { Component: mod.default } }
|
|
351
|
+
if (body.type === "BlockStatement") {
|
|
352
|
+
// Search through statements for import() call in variable declarations
|
|
353
|
+
for (const statement of body.body) {
|
|
354
|
+
if (statement.type !== "VariableDeclaration")
|
|
355
|
+
continue;
|
|
356
|
+
for (const declarator of statement.declarations) {
|
|
357
|
+
let init = declarator.init;
|
|
358
|
+
// Unwrap AwaitExpression if present: await import(...)
|
|
359
|
+
if (init?.type === "AwaitExpression") {
|
|
360
|
+
init = init.argument;
|
|
361
|
+
}
|
|
362
|
+
// Check if this is an import() call
|
|
363
|
+
if (init?.type === "CallExpression" &&
|
|
364
|
+
init.callee.type === "Import" &&
|
|
365
|
+
init.arguments[0]?.type === "StringLiteral") {
|
|
366
|
+
pageImportPath = init.arguments[0].value;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (pageImportPath)
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
// Exit early if we found the import in block statement
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
// Case 2: Expression body with await
|
|
377
|
+
// Example: lazy: async () => await import("./Page.tsx")
|
|
378
|
+
if (body.type === "AwaitExpression") {
|
|
379
|
+
body = body.argument;
|
|
380
|
+
}
|
|
381
|
+
// Case 3: Direct import() call
|
|
382
|
+
// Examples:
|
|
383
|
+
// lazy: () => import("./Page.tsx")
|
|
384
|
+
// lazy: async () => import("./Page.tsx")
|
|
385
|
+
if (body.type === "CallExpression" && body.callee.type === "Import") {
|
|
386
|
+
if (body.arguments[0]?.type === "StringLiteral") {
|
|
387
|
+
pageImportPath = body.arguments[0].value;
|
|
388
|
+
}
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
// Case 4: import().then(...) pattern
|
|
392
|
+
// Examples:
|
|
393
|
+
// lazy: () => import("./Page.tsx").then(mod => ({ Component: mod.default }))
|
|
394
|
+
// lazy: () => import("./Page.tsx").then(mod => ({ Component: mod.SomePage }))
|
|
395
|
+
if (body.type === "CallExpression" &&
|
|
396
|
+
body.callee.type === "MemberExpression" &&
|
|
397
|
+
body.callee.object.type === "CallExpression" &&
|
|
398
|
+
body.callee.object.callee.type === "Import") {
|
|
399
|
+
const importCall = body.callee.object;
|
|
400
|
+
if (importCall.arguments[0]?.type === "StringLiteral") {
|
|
401
|
+
pageImportPath = importCall.arguments[0].value;
|
|
402
|
+
}
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else if (key === "Component" && prop.value.type === "Identifier") {
|
|
407
|
+
// Component property uses an identifier: Component: HomePage
|
|
408
|
+
const componentName = prop.value.name;
|
|
409
|
+
if (allImports.has(componentName)) {
|
|
410
|
+
pageImportPath = allImports.get(componentName);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
else if (key === "element" && prop.value.type === "JSXElement") {
|
|
414
|
+
// element property uses JSX: element: <HomePage />
|
|
415
|
+
const jsxElement = prop.value;
|
|
416
|
+
if (jsxElement.openingElement.name.type === "JSXIdentifier") {
|
|
417
|
+
const componentName = jsxElement.openingElement.name.name;
|
|
418
|
+
if (allImports.has(componentName)) {
|
|
419
|
+
pageImportPath = allImports.get(componentName);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
else if (key === "children" && prop.value.type === "ArrayExpression") {
|
|
424
|
+
children = prop.value;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// Check if any children have index: true
|
|
428
|
+
let hasIndexChild = false;
|
|
429
|
+
if (children) {
|
|
430
|
+
for (const child of children.elements) {
|
|
431
|
+
if (child && child.type === "ObjectExpression") {
|
|
432
|
+
for (const prop of child.properties) {
|
|
433
|
+
if (prop.type === "ObjectProperty" &&
|
|
434
|
+
prop.key.type === "Identifier" &&
|
|
435
|
+
prop.key.name === "index" &&
|
|
436
|
+
prop.value.type === "BooleanLiteral" &&
|
|
437
|
+
prop.value.value === true) {
|
|
438
|
+
hasIndexChild = true;
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
if (hasIndexChild)
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// Add route if we found a page import (either lazy or static)
|
|
448
|
+
// Skip routes with:
|
|
449
|
+
// - path "*" (catch-all routes)
|
|
450
|
+
// - no path and no index (path-less layout routes)
|
|
451
|
+
// - routes that have an index child (layout routes)
|
|
452
|
+
if (pageImportPath &&
|
|
453
|
+
routePath !== "*" &&
|
|
454
|
+
(routePath || hasIndex) &&
|
|
455
|
+
!hasIndexChild) {
|
|
456
|
+
// Build the full route path:
|
|
457
|
+
// 1. If routePath is explicitly set, use it (takes precedence over index)
|
|
458
|
+
// 2. If only index: true (no explicit path), use parent path
|
|
459
|
+
let fullRoutePath;
|
|
460
|
+
if (routePath) {
|
|
461
|
+
fullRoutePath = joinURL(parentPath, routePath);
|
|
462
|
+
}
|
|
463
|
+
else if (hasIndex) {
|
|
464
|
+
fullRoutePath = parentPath;
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
// This shouldn't happen due to our check above, but handle it anyway
|
|
468
|
+
fullRoutePath = parentPath;
|
|
469
|
+
}
|
|
470
|
+
// Normalize empty path to "/"
|
|
471
|
+
if (!fullRoutePath) {
|
|
472
|
+
fullRoutePath = "/";
|
|
473
|
+
}
|
|
474
|
+
const resolvedPath = resolve(dirname(routerFilePath), pageImportPath);
|
|
475
|
+
const pageFilePath = await resolveSourceFile(resolvedPath);
|
|
476
|
+
routes.push({
|
|
477
|
+
path: fullRoutePath,
|
|
478
|
+
pageImportPath,
|
|
479
|
+
pageFilePath,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
// Recursively process children
|
|
483
|
+
if (children) {
|
|
484
|
+
const currentPath = routePath ? joinURL(parentPath, routePath) : parentPath;
|
|
485
|
+
// Normalize empty path to "/" before passing to children
|
|
486
|
+
const normalizedCurrentPath = currentPath || "/";
|
|
487
|
+
await extractRoutesFromArray(children, routes, routerFilePath, rootDir, normalizedCurrentPath, allImports);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=router-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-parser.js","sourceRoot":"","sources":["../src/router-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/socket-manager.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TracedEventEmitter } from "@superblocksteam/shared";
|
|
2
2
|
import type { AiService } from "./ai-service/index.js";
|
|
3
|
-
import type { IComponentDocsServer } from "./component-docs-service/index.js";
|
|
4
3
|
import type { FileSystemManager } from "./file-system-manager.js";
|
|
5
4
|
import type { LockService } from "./lock-service/index.js";
|
|
5
|
+
import type { CheckAuthorization } from "./plugin-options.js";
|
|
6
6
|
import type { SyncService } from "./sync-service/index.js";
|
|
7
7
|
import type { Tracer } from "@opentelemetry/api";
|
|
8
8
|
import type { EditorClientMethods, LibraryClientMethods } from "@superblocksteam/library-shared/types";
|
|
@@ -22,13 +22,13 @@ declare class SocketManager extends TracedEventEmitter<SocketManagerEvents> {
|
|
|
22
22
|
private _disposer;
|
|
23
23
|
constructor(tracer: Tracer);
|
|
24
24
|
private socketServer;
|
|
25
|
-
startSocketServer({ server, fileSyncManager, syncService, lockService, aiService,
|
|
25
|
+
startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, checkAuthorization, path, tracer, }: {
|
|
26
26
|
server: http.Server;
|
|
27
27
|
fileSyncManager: FileSystemManager;
|
|
28
28
|
syncService?: SyncService;
|
|
29
29
|
lockService?: LockService;
|
|
30
30
|
aiService?: AiService;
|
|
31
|
-
|
|
31
|
+
checkAuthorization: CheckAuthorization;
|
|
32
32
|
path: string;
|
|
33
33
|
tracer: Tracer;
|
|
34
34
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,iBAIjD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,cAAM,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACjE,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwB;gBAE7B,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,YAAY,CAA8B;IAClD,iBAAiB,CAAC,EAChB,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,MAAM,GACP,EAAE;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC;QACnC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB;IA+PD,iBAAiB,CACf,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOnE,kBAAkB,CAChB,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOpE,mBAAmB;IAInB,OAAO;CAGR"}
|
package/dist/socket-manager.js
CHANGED
|
@@ -20,7 +20,7 @@ class SocketManager extends TracedEventEmitter {
|
|
|
20
20
|
super(tracer);
|
|
21
21
|
}
|
|
22
22
|
socketServer;
|
|
23
|
-
startSocketServer({ server, fileSyncManager, syncService, lockService, aiService,
|
|
23
|
+
startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, checkAuthorization, path, tracer, }) {
|
|
24
24
|
if (this.socketServer) {
|
|
25
25
|
throw new Error("Socket server already started");
|
|
26
26
|
}
|
|
@@ -72,6 +72,13 @@ class SocketManager extends TracedEventEmitter {
|
|
|
72
72
|
wss.close();
|
|
73
73
|
};
|
|
74
74
|
wss.on("connection", (ws, isEditor, peerId, userId) => {
|
|
75
|
+
const authMiddleware = async (_params, ctx, _peer, next) => {
|
|
76
|
+
const result = await checkAuthorization(ctx.peerAuthorization);
|
|
77
|
+
if (!result.success) {
|
|
78
|
+
throw new Error(result.error);
|
|
79
|
+
}
|
|
80
|
+
return await next();
|
|
81
|
+
};
|
|
75
82
|
const socket = createISocketClient(new TracedSocket(ws, {
|
|
76
83
|
editor: {
|
|
77
84
|
// Update widgets
|
|
@@ -85,16 +92,9 @@ class SocketManager extends TracedEventEmitter {
|
|
|
85
92
|
// Renames
|
|
86
93
|
renameElement: [fileSyncManager.handleRenameElement],
|
|
87
94
|
renameApi: [fileSyncManager.handleRenameApi],
|
|
88
|
-
// Update entities (variables, timers, events)
|
|
89
|
-
addEntity: [fileSyncManager.handleAddEntity],
|
|
90
|
-
updateEntity: [fileSyncManager.handleUpdateEntity],
|
|
91
|
-
deleteEntity: [fileSyncManager.handleDeleteEntity],
|
|
92
95
|
// Update APIs
|
|
93
96
|
apiUpdate: [fileSyncManager.handleUpdateApi],
|
|
94
97
|
apiDelete: [fileSyncManager.handleDeleteApi],
|
|
95
|
-
// Update pages
|
|
96
|
-
createPage: [fileSyncManager.handleCreatePage],
|
|
97
|
-
deletePage: [fileSyncManager.handleDeletePage],
|
|
98
98
|
// Ensure files are synced
|
|
99
99
|
ensureFilesSynced: [
|
|
100
100
|
async () => {
|
|
@@ -132,6 +132,11 @@ class SocketManager extends TracedEventEmitter {
|
|
|
132
132
|
await aiService?.handlePromptInterpretation(request, peer);
|
|
133
133
|
},
|
|
134
134
|
],
|
|
135
|
+
aiExplainCode: [
|
|
136
|
+
async (request, _context, peer) => {
|
|
137
|
+
await aiService?.handleAiExplainCode(request, peer);
|
|
138
|
+
},
|
|
139
|
+
],
|
|
135
140
|
aiChatGetMessages: [
|
|
136
141
|
async () => {
|
|
137
142
|
const messages = await aiService?.chatSessionStore.getMessages();
|
|
@@ -151,15 +156,9 @@ class SocketManager extends TracedEventEmitter {
|
|
|
151
156
|
aiService?.handleClearRuntimeError(request.id);
|
|
152
157
|
},
|
|
153
158
|
],
|
|
154
|
-
registerComponentDocs: [
|
|
155
|
-
async (request) => {
|
|
156
|
-
await componentDocsService?.handleComponentDocs(request);
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
159
|
ping: [
|
|
160
160
|
async (ping) => {
|
|
161
161
|
if (ping?.isUserActive !== undefined) {
|
|
162
|
-
getLogger().debug(`Ping received with isUserActive: ${ping?.isUserActive}`);
|
|
163
162
|
if (ping.isUserActive) {
|
|
164
163
|
void lockService?.restartInactivityTimer();
|
|
165
164
|
lockService?.markActivity(ping.isUserActive);
|
|
@@ -168,7 +167,7 @@ class SocketManager extends TracedEventEmitter {
|
|
|
168
167
|
},
|
|
169
168
|
],
|
|
170
169
|
},
|
|
171
|
-
}, [], tracer, {
|
|
170
|
+
}, [authMiddleware], tracer, {
|
|
172
171
|
onClose: () => {
|
|
173
172
|
console.log("Socket closed");
|
|
174
173
|
},
|