jvspatial 0.0.1__tar.gz
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.
- jvspatial-0.0.1/.env.example +493 -0
- jvspatial-0.0.1/.flake8 +15 -0
- jvspatial-0.0.1/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
- jvspatial-0.0.1/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- jvspatial-0.0.1/.github/ISSUE_TEMPLATE/refactor-request.md +40 -0
- jvspatial-0.0.1/.github/pull_request_template.md +76 -0
- jvspatial-0.0.1/.github/release.yml +7 -0
- jvspatial-0.0.1/.github/workflows/README.md +93 -0
- jvspatial-0.0.1/.github/workflows/VERSIONING.md +185 -0
- jvspatial-0.0.1/.github/workflows/WORKFLOW_SUMMARY.md +79 -0
- jvspatial-0.0.1/.github/workflows/pre-commit.yaml +28 -0
- jvspatial-0.0.1/.github/workflows/publish.yml +171 -0
- jvspatial-0.0.1/.github/workflows/test-jvspatial.yaml +34 -0
- jvspatial-0.0.1/.gitignore +215 -0
- jvspatial-0.0.1/.pre-commit-config.yaml +69 -0
- jvspatial-0.0.1/LICENSE +21 -0
- jvspatial-0.0.1/PKG-INFO +394 -0
- jvspatial-0.0.1/README.md +326 -0
- jvspatial-0.0.1/SPEC.md +5276 -0
- jvspatial-0.0.1/docs/md/README.md +322 -0
- jvspatial-0.0.1/docs/md/api-architecture.md +499 -0
- jvspatial-0.0.1/docs/md/architectural-decisions.md +413 -0
- jvspatial-0.0.1/docs/md/attribute-annotations.md +332 -0
- jvspatial-0.0.1/docs/md/auth-quickstart.md +289 -0
- jvspatial-0.0.1/docs/md/authentication.md +735 -0
- jvspatial-0.0.1/docs/md/caching.md +566 -0
- jvspatial-0.0.1/docs/md/context-management-guide.md +100 -0
- jvspatial-0.0.1/docs/md/contributing.md +71 -0
- jvspatial-0.0.1/docs/md/custom-database-guide.md +700 -0
- jvspatial-0.0.1/docs/md/decorator-reference.md +460 -0
- jvspatial-0.0.1/docs/md/design-decisions.md +266 -0
- jvspatial-0.0.1/docs/md/entity-reference.md +259 -0
- jvspatial-0.0.1/docs/md/environment-configuration.md +440 -0
- jvspatial-0.0.1/docs/md/error-handling.md +167 -0
- jvspatial-0.0.1/docs/md/examples.md +750 -0
- jvspatial-0.0.1/docs/md/file-storage-architecture.md +1030 -0
- jvspatial-0.0.1/docs/md/file-storage-usage.md +1679 -0
- jvspatial-0.0.1/docs/md/graph-context.md +701 -0
- jvspatial-0.0.1/docs/md/graph-traversal.md +257 -0
- jvspatial-0.0.1/docs/md/graph-visualization.md +614 -0
- jvspatial-0.0.1/docs/md/import-patterns.md +472 -0
- jvspatial-0.0.1/docs/md/infinite-walk-protection.md +827 -0
- jvspatial-0.0.1/docs/md/license.md +31 -0
- jvspatial-0.0.1/docs/md/migration.md +596 -0
- jvspatial-0.0.1/docs/md/module-responsibility-matrix.md +352 -0
- jvspatial-0.0.1/docs/md/mongodb-query-interface.md +433 -0
- jvspatial-0.0.1/docs/md/node-operations.md +128 -0
- jvspatial-0.0.1/docs/md/optimization.md +187 -0
- jvspatial-0.0.1/docs/md/pagination.md +589 -0
- jvspatial-0.0.1/docs/md/quick-start-guide.md +421 -0
- jvspatial-0.0.1/docs/md/rest-api.md +1909 -0
- jvspatial-0.0.1/docs/md/scheduler.md +756 -0
- jvspatial-0.0.1/docs/md/server-api.md +1282 -0
- jvspatial-0.0.1/docs/md/troubleshooting.md +71 -0
- jvspatial-0.0.1/docs/md/walker-queue-operations.md +313 -0
- jvspatial-0.0.1/docs/md/walker-reporting-events.md +1113 -0
- jvspatial-0.0.1/docs/md/walker-trail-tracking.md +775 -0
- jvspatial-0.0.1/docs/md/webhook-architecture.md +260 -0
- jvspatial-0.0.1/docs/md/webhooks-quickstart.md +420 -0
- jvspatial-0.0.1/examples/README.md +93 -0
- jvspatial-0.0.1/examples/api/README.md +198 -0
- jvspatial-0.0.1/examples/api/authenticated_endpoints_example.py +1206 -0
- jvspatial-0.0.1/examples/api/lambda_example.py +184 -0
- jvspatial-0.0.1/examples/api/unauthenticated_endpoints_example.py +453 -0
- jvspatial-0.0.1/examples/core/README.md +124 -0
- jvspatial-0.0.1/examples/core/cities.py +191 -0
- jvspatial-0.0.1/examples/core/context/README.md +15 -0
- jvspatial-0.0.1/examples/core/context/graphcontext_demo.py +308 -0
- jvspatial-0.0.1/examples/core/context/simple_dynamic_example.py +369 -0
- jvspatial-0.0.1/examples/core/graph_visualization_example.py +389 -0
- jvspatial-0.0.1/examples/core/models/README.md +14 -0
- jvspatial-0.0.1/examples/core/models/agent_graph.py +689 -0
- jvspatial-0.0.1/examples/core/models/travel_graph.py +613 -0
- jvspatial-0.0.1/examples/core/spatial_search.py +183 -0
- jvspatial-0.0.1/examples/database/README.md +10 -0
- jvspatial-0.0.1/examples/database/custom_database_example.py +196 -0
- jvspatial-0.0.1/examples/database/database_switching_example.py +296 -0
- jvspatial-0.0.1/examples/database/filtering/README.md +18 -0
- jvspatial-0.0.1/examples/database/filtering/enhanced_nodes_filtering.py +268 -0
- jvspatial-0.0.1/examples/database/filtering/semantic_filtering.py +299 -0
- jvspatial-0.0.1/examples/database/multi_database_example.py +326 -0
- jvspatial-0.0.1/examples/database/pagination/README.md +26 -0
- jvspatial-0.0.1/examples/database/pagination/object_pagination_demo.py +159 -0
- jvspatial-0.0.1/examples/database/query_interface_example.py +338 -0
- jvspatial-0.0.1/examples/database/sqlite_example.py +370 -0
- jvspatial-0.0.1/examples/database/unified_query_interface_example.py +379 -0
- jvspatial-0.0.1/examples/error_handling/README.md +131 -0
- jvspatial-0.0.1/examples/error_handling/basic_error_handling.py +113 -0
- jvspatial-0.0.1/examples/error_handling/database_error_handling.py +222 -0
- jvspatial-0.0.1/examples/error_handling/walker_error_handling.py +310 -0
- jvspatial-0.0.1/examples/scheduler/README.md +37 -0
- jvspatial-0.0.1/examples/scheduler/dynamic_scheduler_demo.py +372 -0
- jvspatial-0.0.1/examples/scheduler/scheduler_example.py +679 -0
- jvspatial-0.0.1/examples/storage/README.md +126 -0
- jvspatial-0.0.1/examples/storage/file_storage_demo.py +387 -0
- jvspatial-0.0.1/examples/storage/storage_example.py +264 -0
- jvspatial-0.0.1/examples/test_examples.py +295 -0
- jvspatial-0.0.1/examples/walkers/README.md +8 -0
- jvspatial-0.0.1/examples/walkers/multi_target_hooks_demo.py +493 -0
- jvspatial-0.0.1/examples/walkers/walker_events_demo.py +474 -0
- jvspatial-0.0.1/examples/walkers/walker_reporting_demo.py +383 -0
- jvspatial-0.0.1/examples/walkers/walker_traversal_demo.py +258 -0
- jvspatial-0.0.1/jvspatial/__init__.py +104 -0
- jvspatial-0.0.1/jvspatial/api/__init__.py +45 -0
- jvspatial-0.0.1/jvspatial/api/auth/config.py +76 -0
- jvspatial-0.0.1/jvspatial/api/auth/enhanced.py +503 -0
- jvspatial-0.0.1/jvspatial/api/auth/models.py +75 -0
- jvspatial-0.0.1/jvspatial/api/auth/openapi_config.py +209 -0
- jvspatial-0.0.1/jvspatial/api/auth/service.py +338 -0
- jvspatial-0.0.1/jvspatial/api/components/__init__.py +19 -0
- jvspatial-0.0.1/jvspatial/api/components/app_builder.py +154 -0
- jvspatial-0.0.1/jvspatial/api/components/auth_middleware.py +323 -0
- jvspatial-0.0.1/jvspatial/api/components/endpoint_manager.py +328 -0
- jvspatial-0.0.1/jvspatial/api/components/error_handler.py +118 -0
- jvspatial-0.0.1/jvspatial/api/config.py +191 -0
- jvspatial-0.0.1/jvspatial/api/constants.py +220 -0
- jvspatial-0.0.1/jvspatial/api/context.py +141 -0
- jvspatial-0.0.1/jvspatial/api/decorators/__init__.py +60 -0
- jvspatial-0.0.1/jvspatial/api/decorators/field.py +146 -0
- jvspatial-0.0.1/jvspatial/api/decorators/route.py +354 -0
- jvspatial-0.0.1/jvspatial/api/decorators/route_config.py +322 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/__init__.py +56 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/factory.py +428 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/metadata.py +94 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/registry.py +605 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/response.py +821 -0
- jvspatial-0.0.1/jvspatial/api/endpoints/router.py +995 -0
- jvspatial-0.0.1/jvspatial/api/exceptions.py +451 -0
- jvspatial-0.0.1/jvspatial/api/integrations/__init__.py +15 -0
- jvspatial-0.0.1/jvspatial/api/integrations/scheduler/__init__.py +18 -0
- jvspatial-0.0.1/jvspatial/api/integrations/scheduler/decorators.py +219 -0
- jvspatial-0.0.1/jvspatial/api/integrations/scheduler/middleware.py +237 -0
- jvspatial-0.0.1/jvspatial/api/integrations/scheduler/models.py +117 -0
- jvspatial-0.0.1/jvspatial/api/integrations/scheduler/scheduler.py +992 -0
- jvspatial-0.0.1/jvspatial/api/integrations/storage/__init__.py +12 -0
- jvspatial-0.0.1/jvspatial/api/integrations/storage/service.py +347 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/__init__.py +19 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/decorators.py +12 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/helpers.py +328 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/middleware.py +595 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/models.py +416 -0
- jvspatial-0.0.1/jvspatial/api/integrations/webhooks/utils.py +507 -0
- jvspatial-0.0.1/jvspatial/api/middleware/__init__.py +24 -0
- jvspatial-0.0.1/jvspatial/api/middleware/error.py +102 -0
- jvspatial-0.0.1/jvspatial/api/middleware/manager.py +261 -0
- jvspatial-0.0.1/jvspatial/api/server.py +1573 -0
- jvspatial-0.0.1/jvspatial/api/services/__init__.py +28 -0
- jvspatial-0.0.1/jvspatial/api/services/discovery.py +332 -0
- jvspatial-0.0.1/jvspatial/api/services/lifecycle.py +237 -0
- jvspatial-0.0.1/jvspatial/async_utils/__init__.py +506 -0
- jvspatial-0.0.1/jvspatial/cache/__init__.py +29 -0
- jvspatial-0.0.1/jvspatial/cache/base.py +187 -0
- jvspatial-0.0.1/jvspatial/cache/factory.py +80 -0
- jvspatial-0.0.1/jvspatial/cache/layered.py +281 -0
- jvspatial-0.0.1/jvspatial/cache/memory.py +205 -0
- jvspatial-0.0.1/jvspatial/cache/redis.py +349 -0
- jvspatial-0.0.1/jvspatial/config.py +319 -0
- jvspatial-0.0.1/jvspatial/core/__init__.py +64 -0
- jvspatial-0.0.1/jvspatial/core/annotations.py +340 -0
- jvspatial-0.0.1/jvspatial/core/context.py +1084 -0
- jvspatial-0.0.1/jvspatial/core/decorators.py +85 -0
- jvspatial-0.0.1/jvspatial/core/entities/__init__.py +38 -0
- jvspatial-0.0.1/jvspatial/core/entities/edge.py +338 -0
- jvspatial-0.0.1/jvspatial/core/entities/node.py +804 -0
- jvspatial-0.0.1/jvspatial/core/entities/node_query.py +87 -0
- jvspatial-0.0.1/jvspatial/core/entities/object.py +526 -0
- jvspatial-0.0.1/jvspatial/core/entities/root.py +44 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker.py +896 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker_components/__init__.py +13 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker_components/event_system.py +37 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker_components/protection.py +169 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker_components/walker_queue.py +195 -0
- jvspatial-0.0.1/jvspatial/core/entities/walker_components/walker_trail.py +72 -0
- jvspatial-0.0.1/jvspatial/core/events.py +186 -0
- jvspatial-0.0.1/jvspatial/core/graph.py +453 -0
- jvspatial-0.0.1/jvspatial/core/pager.py +310 -0
- jvspatial-0.0.1/jvspatial/core/utils.py +69 -0
- jvspatial-0.0.1/jvspatial/db/__init__.py +73 -0
- jvspatial-0.0.1/jvspatial/db/database.py +116 -0
- jvspatial-0.0.1/jvspatial/db/dynamodb.py +333 -0
- jvspatial-0.0.1/jvspatial/db/factory.py +335 -0
- jvspatial-0.0.1/jvspatial/db/jsondb.py +133 -0
- jvspatial-0.0.1/jvspatial/db/manager.py +266 -0
- jvspatial-0.0.1/jvspatial/db/mongodb.py +94 -0
- jvspatial-0.0.1/jvspatial/db/query.py +645 -0
- jvspatial-0.0.1/jvspatial/db/sqlite.py +235 -0
- jvspatial-0.0.1/jvspatial/db/transaction.py +277 -0
- jvspatial-0.0.1/jvspatial/dev_tools/__init__.py +484 -0
- jvspatial-0.0.1/jvspatial/exceptions.py +472 -0
- jvspatial-0.0.1/jvspatial/logging/__init__.py +336 -0
- jvspatial-0.0.1/jvspatial/memory/__init__.py +481 -0
- jvspatial-0.0.1/jvspatial/profiling/__init__.py +486 -0
- jvspatial-0.0.1/jvspatial/storage/__init__.py +228 -0
- jvspatial-0.0.1/jvspatial/storage/exceptions.py +165 -0
- jvspatial-0.0.1/jvspatial/storage/interfaces/__init__.py +34 -0
- jvspatial-0.0.1/jvspatial/storage/interfaces/base.py +390 -0
- jvspatial-0.0.1/jvspatial/storage/interfaces/local.py +772 -0
- jvspatial-0.0.1/jvspatial/storage/interfaces/s3.py +764 -0
- jvspatial-0.0.1/jvspatial/storage/managers/__init__.py +12 -0
- jvspatial-0.0.1/jvspatial/storage/managers/proxy.py +494 -0
- jvspatial-0.0.1/jvspatial/storage/models.py +108 -0
- jvspatial-0.0.1/jvspatial/storage/security/__init__.py +27 -0
- jvspatial-0.0.1/jvspatial/storage/security/path_sanitizer.py +278 -0
- jvspatial-0.0.1/jvspatial/storage/security/validator.py +394 -0
- jvspatial-0.0.1/jvspatial/testing/__init__.py +649 -0
- jvspatial-0.0.1/jvspatial/utils/__init__.py +162 -0
- jvspatial-0.0.1/jvspatial/utils/context.py +60 -0
- jvspatial-0.0.1/jvspatial/utils/decorators.py +340 -0
- jvspatial-0.0.1/jvspatial/utils/factory.py +96 -0
- jvspatial-0.0.1/jvspatial/utils/serialization.py +46 -0
- jvspatial-0.0.1/jvspatial/utils/types.py +402 -0
- jvspatial-0.0.1/jvspatial/utils/validation.py +41 -0
- jvspatial-0.0.1/jvspatial/version.py +12 -0
- jvspatial-0.0.1/jvspatial.egg-info/PKG-INFO +394 -0
- jvspatial-0.0.1/jvspatial.egg-info/SOURCES.txt +271 -0
- jvspatial-0.0.1/jvspatial.egg-info/dependency_links.txt +1 -0
- jvspatial-0.0.1/jvspatial.egg-info/requires.txt +41 -0
- jvspatial-0.0.1/jvspatial.egg-info/top_level.txt +1 -0
- jvspatial-0.0.1/pyproject.toml +168 -0
- jvspatial-0.0.1/requirements-dev.txt +24 -0
- jvspatial-0.0.1/requirements-optional.txt +38 -0
- jvspatial-0.0.1/requirements-prod.txt +25 -0
- jvspatial-0.0.1/requirements-test.txt +17 -0
- jvspatial-0.0.1/requirements.txt +23 -0
- jvspatial-0.0.1/setup.cfg +4 -0
- jvspatial-0.0.1/setup.py +93 -0
- jvspatial-0.0.1/tests/api/endpoint/test_endpoint_integration.py +501 -0
- jvspatial-0.0.1/tests/api/endpoint/test_endpoint_response.py +387 -0
- jvspatial-0.0.1/tests/api/services/test_discovery.py +35 -0
- jvspatial-0.0.1/tests/api/services/test_endpoint_registry.py +1013 -0
- jvspatial-0.0.1/tests/api/services/test_file_storage.py +46 -0
- jvspatial-0.0.1/tests/api/services/test_lifecycle.py +96 -0
- jvspatial-0.0.1/tests/api/services/test_middleware.py +77 -0
- jvspatial-0.0.1/tests/api/test_api_integration.py +855 -0
- jvspatial-0.0.1/tests/api/test_components.py +341 -0
- jvspatial-0.0.1/tests/api/test_endpoint_decorator.py +249 -0
- jvspatial-0.0.1/tests/api/test_scheduler.py +307 -0
- jvspatial-0.0.1/tests/api/webhook/__init__.py +0 -0
- jvspatial-0.0.1/tests/api/webhook/test_decorators.py +238 -0
- jvspatial-0.0.1/tests/cache/test_cache_factory.py +135 -0
- jvspatial-0.0.1/tests/cache/test_context_cache.py +306 -0
- jvspatial-0.0.1/tests/cache/test_layered.py +115 -0
- jvspatial-0.0.1/tests/cache/test_memory_cache.py +353 -0
- jvspatial-0.0.1/tests/cache/test_redis.py +216 -0
- jvspatial-0.0.1/tests/conftest.py +31 -0
- jvspatial-0.0.1/tests/core/test_entities.py +781 -0
- jvspatial-0.0.1/tests/core/test_graph_context.py +821 -0
- jvspatial-0.0.1/tests/core/test_pagination.py +654 -0
- jvspatial-0.0.1/tests/core/test_queue_operations.py +666 -0
- jvspatial-0.0.1/tests/core/test_walker.py +758 -0
- jvspatial-0.0.1/tests/core/test_walker_protection.py +674 -0
- jvspatial-0.0.1/tests/core/test_walker_reporting_events.py +702 -0
- jvspatial-0.0.1/tests/core/test_walker_trail_new.py +445 -0
- jvspatial-0.0.1/tests/db/test_database_factory.py +574 -0
- jvspatial-0.0.1/tests/db/test_database_integration.py +929 -0
- jvspatial-0.0.1/tests/db/test_jsondb.py +1396 -0
- jvspatial-0.0.1/tests/db/test_mongodb.py +413 -0
- jvspatial-0.0.1/tests/db/test_query.py +593 -0
- jvspatial-0.0.1/tests/db/test_sqlite.py +696 -0
- jvspatial-0.0.1/tests/example_test.py +89 -0
- jvspatial-0.0.1/tests/integration/test_edge_cases.py +864 -0
- jvspatial-0.0.1/tests/integration/test_full_workflows.py +403 -0
- jvspatial-0.0.1/tests/storage/__init__.py +1 -0
- jvspatial-0.0.1/tests/storage/integration/__init__.py +13 -0
- jvspatial-0.0.1/tests/storage/integration/test_storage_workflows.py +879 -0
- jvspatial-0.0.1/tests/storage/test_exceptions.py +799 -0
- jvspatial-0.0.1/tests/storage/test_factory.py +104 -0
- jvspatial-0.0.1/tests/storage/test_interfaces.py +1407 -0
- jvspatial-0.0.1/tests/storage/test_managers.py +972 -0
- jvspatial-0.0.1/tests/storage/test_security.py +945 -0
- jvspatial-0.0.1/tests/test_config.py +188 -0
- jvspatial-0.0.1/tests/test_node_operations.py +819 -0
- jvspatial-0.0.1/tests/testing/test_testing_utilities.py +281 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# jvspatial Environment Configuration Template
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# Copy this file to .env and customize the values for your environment
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# 1. Copy: cp .env.example .env
|
|
8
|
+
# 2. Edit the .env file with your specific configuration
|
|
9
|
+
# 3. Load in your application: python-dotenv or similar
|
|
10
|
+
#
|
|
11
|
+
# =============================================================================
|
|
12
|
+
|
|
13
|
+
# -----------------------------------------------------------------------------
|
|
14
|
+
# API ROUTES CONFIGURATION
|
|
15
|
+
# -----------------------------------------------------------------------------
|
|
16
|
+
# Configure API endpoint prefixes and paths
|
|
17
|
+
|
|
18
|
+
# API Prefix (prefix for all API endpoints)
|
|
19
|
+
# Default: /api
|
|
20
|
+
# Example: Change to /v1 for versioned API URLs
|
|
21
|
+
# JVSPATIAL_API_PREFIX=/api
|
|
22
|
+
|
|
23
|
+
# Health check endpoint path
|
|
24
|
+
# Default: /health
|
|
25
|
+
# JVSPATIAL_API_HEALTH=/health
|
|
26
|
+
|
|
27
|
+
# Root endpoint path
|
|
28
|
+
# Default: /
|
|
29
|
+
# JVSPATIAL_API_ROOT=/
|
|
30
|
+
|
|
31
|
+
# Storage endpoints prefix
|
|
32
|
+
# Default: /storage
|
|
33
|
+
# JVSPATIAL_STORAGE_PREFIX=/storage
|
|
34
|
+
|
|
35
|
+
# Proxy endpoints prefix
|
|
36
|
+
# Default: /p
|
|
37
|
+
# JVSPATIAL_PROXY_PREFIX=/p
|
|
38
|
+
|
|
39
|
+
# Example: Version your API
|
|
40
|
+
# JVSPATIAL_API_PREFIX=/v1
|
|
41
|
+
# Result: All endpoints will use /v1 instead of /api
|
|
42
|
+
# - /v1/users/analyze instead of /api/users/analyze
|
|
43
|
+
# - /v1/data/read instead of /api/data/read
|
|
44
|
+
|
|
45
|
+
# -----------------------------------------------------------------------------
|
|
46
|
+
# API SERVER CONFIGURATION
|
|
47
|
+
# -----------------------------------------------------------------------------
|
|
48
|
+
# Configure server host, port, and behavior
|
|
49
|
+
|
|
50
|
+
# Server host address
|
|
51
|
+
# Default: 0.0.0.0 (all interfaces)
|
|
52
|
+
# JVSPATIAL_HOST=0.0.0.0
|
|
53
|
+
|
|
54
|
+
# Server port
|
|
55
|
+
# Default: 8000
|
|
56
|
+
# JVSPATIAL_PORT=8000
|
|
57
|
+
|
|
58
|
+
# Log level: debug, info, warning, error, critical
|
|
59
|
+
# Default: info
|
|
60
|
+
# JVSPATIAL_LOG_LEVEL=info
|
|
61
|
+
|
|
62
|
+
# Debug mode: true, false
|
|
63
|
+
# Default: false
|
|
64
|
+
# JVSPATIAL_DEBUG=false
|
|
65
|
+
|
|
66
|
+
# API title (shown in OpenAPI docs)
|
|
67
|
+
# Default: jvspatial API
|
|
68
|
+
# JVSPATIAL_API_TITLE=jvspatial API
|
|
69
|
+
|
|
70
|
+
# API version (shown in OpenAPI docs)
|
|
71
|
+
# Default: 1.0.0
|
|
72
|
+
# JVSPATIAL_API_VERSION=1.0.0
|
|
73
|
+
|
|
74
|
+
# API description (shown in OpenAPI docs)
|
|
75
|
+
# Default: API built with jvspatial framework
|
|
76
|
+
# JVSPATIAL_API_DESCRIPTION=API built with jvspatial framework
|
|
77
|
+
|
|
78
|
+
# -----------------------------------------------------------------------------
|
|
79
|
+
# CORS CONFIGURATION
|
|
80
|
+
# -----------------------------------------------------------------------------
|
|
81
|
+
# Configure Cross-Origin Resource Sharing
|
|
82
|
+
|
|
83
|
+
# Enable CORS: true, false
|
|
84
|
+
# Default: true
|
|
85
|
+
# JVSPATIAL_CORS_ENABLED=true
|
|
86
|
+
|
|
87
|
+
# CORS allowed origins (comma-separated)
|
|
88
|
+
# Default: *
|
|
89
|
+
# Examples:
|
|
90
|
+
# - Single origin: https://example.com
|
|
91
|
+
# - Multiple origins: https://example.com,https://app.example.com
|
|
92
|
+
# JVSPATIAL_CORS_ORIGINS=*
|
|
93
|
+
|
|
94
|
+
# CORS allowed methods (comma-separated)
|
|
95
|
+
# Default: *
|
|
96
|
+
# JVSPATIAL_CORS_METHODS=*
|
|
97
|
+
|
|
98
|
+
# CORS allowed headers (comma-separated)
|
|
99
|
+
# Default: *
|
|
100
|
+
# JVSPATIAL_CORS_HEADERS=*
|
|
101
|
+
|
|
102
|
+
# -----------------------------------------------------------------------------
|
|
103
|
+
# DATABASE COLLECTION NAMES
|
|
104
|
+
# -----------------------------------------------------------------------------
|
|
105
|
+
# Customize collection names for different environments
|
|
106
|
+
|
|
107
|
+
# User collection name
|
|
108
|
+
# Default: users
|
|
109
|
+
# JVSPATIAL_COLLECTION_USERS=users
|
|
110
|
+
|
|
111
|
+
# API keys collection name
|
|
112
|
+
# Default: api_keys
|
|
113
|
+
# JVSPATIAL_COLLECTION_API_KEYS=api_keys
|
|
114
|
+
|
|
115
|
+
# Sessions collection name
|
|
116
|
+
# Default: sessions
|
|
117
|
+
# JVSPATIAL_COLLECTION_SESSIONS=sessions
|
|
118
|
+
|
|
119
|
+
# Webhooks collection name
|
|
120
|
+
# Default: webhooks
|
|
121
|
+
# JVSPATIAL_COLLECTION_WEBHOOKS=webhooks
|
|
122
|
+
|
|
123
|
+
# Webhook requests collection name
|
|
124
|
+
# Default: webhook_requests
|
|
125
|
+
# JVSPATIAL_COLLECTION_WEBHOOK_REQUESTS=webhook_requests
|
|
126
|
+
|
|
127
|
+
# Scheduled tasks collection name
|
|
128
|
+
# Default: scheduled_tasks
|
|
129
|
+
# JVSPATIAL_COLLECTION_SCHEDULED_TASKS=scheduled_tasks
|
|
130
|
+
|
|
131
|
+
# -----------------------------------------------------------------------------
|
|
132
|
+
# DATABASE CONFIGURATION
|
|
133
|
+
# -----------------------------------------------------------------------------
|
|
134
|
+
# Choose the database backend for jvspatial persistence
|
|
135
|
+
|
|
136
|
+
# Database Type Selection
|
|
137
|
+
# Options: 'json', 'mongodb'
|
|
138
|
+
# Default: 'json' (if not specified)
|
|
139
|
+
JVSPATIAL_DB_TYPE=json
|
|
140
|
+
|
|
141
|
+
# -----------------------------------------------------------------------------
|
|
142
|
+
# CACHING CONFIGURATION
|
|
143
|
+
# -----------------------------------------------------------------------------
|
|
144
|
+
# Configure caching strategy for improved performance
|
|
145
|
+
# jvspatial supports multiple cache backends: memory, redis, and layered (L1+L2)
|
|
146
|
+
|
|
147
|
+
# Cache Backend Selection
|
|
148
|
+
# Options: 'memory', 'redis', 'layered'
|
|
149
|
+
# - memory: Fast in-memory cache (single server)
|
|
150
|
+
# - redis: Distributed Redis cache (multi-server)
|
|
151
|
+
# - layered: Two-tier cache with memory (L1) + Redis (L2)
|
|
152
|
+
# Default: Auto-detected ('layered' if Redis URL configured, otherwise 'memory')
|
|
153
|
+
# JVSPATIAL_CACHE_BACKEND=memory
|
|
154
|
+
|
|
155
|
+
# Cache Size (for memory and L1 cache)
|
|
156
|
+
# Number of items to cache in memory
|
|
157
|
+
# Higher values = better performance but more memory usage
|
|
158
|
+
# Typical values:
|
|
159
|
+
# - Development: 500-1000
|
|
160
|
+
# - Production: 1000-5000
|
|
161
|
+
# - Memory-constrained: 100-500
|
|
162
|
+
# Default: 1000
|
|
163
|
+
JVSPATIAL_CACHE_SIZE=1000
|
|
164
|
+
|
|
165
|
+
# L1 Cache Size (for layered cache)
|
|
166
|
+
# Size of the fast in-memory L1 cache when using layered caching
|
|
167
|
+
# Should be smaller than JVSPATIAL_CACHE_SIZE for hot data
|
|
168
|
+
# Default: 500
|
|
169
|
+
# JVSPATIAL_L1_CACHE_SIZE=500
|
|
170
|
+
|
|
171
|
+
# Redis URL (for redis and layered backends)
|
|
172
|
+
# Connection URL for Redis cache backend
|
|
173
|
+
# Format: redis://[password@]host[:port][/database]
|
|
174
|
+
# Examples:
|
|
175
|
+
# - redis://localhost:6379 (local, no auth)
|
|
176
|
+
# - redis://password@localhost:6379 (with password)
|
|
177
|
+
# - redis://redis-cache:6379/0 (custom host and database)
|
|
178
|
+
# - rediss://user:password@redis.example.com:6380 (SSL/TLS)
|
|
179
|
+
# Default: redis://localhost:6379
|
|
180
|
+
# JVSPATIAL_REDIS_URL=redis://localhost:6379
|
|
181
|
+
|
|
182
|
+
# Redis TTL (Time-To-Live)
|
|
183
|
+
# How long cached items remain in Redis (in seconds)
|
|
184
|
+
# Set to 0 for no expiration (not recommended)
|
|
185
|
+
# Default: 3600 (1 hour)
|
|
186
|
+
# JVSPATIAL_REDIS_TTL=3600
|
|
187
|
+
|
|
188
|
+
# -----------------------------------------------------------------------------
|
|
189
|
+
# JSON DATABASE CONFIGURATION
|
|
190
|
+
# -----------------------------------------------------------------------------
|
|
191
|
+
# Used when JVSPATIAL_DB_TYPE=json (default backend)
|
|
192
|
+
|
|
193
|
+
# Base path for JSON database files
|
|
194
|
+
# The library will create subdirectories for different collections
|
|
195
|
+
# Relative paths are relative to your application's working directory
|
|
196
|
+
# Examples:
|
|
197
|
+
# - ./data/jvdb (relative path)
|
|
198
|
+
# - /var/lib/jvspatial/db (absolute path)
|
|
199
|
+
# - ~/jvspatial_data (home directory)
|
|
200
|
+
JVSPATIAL_JSONDB_PATH=./jvdb
|
|
201
|
+
|
|
202
|
+
# -----------------------------------------------------------------------------
|
|
203
|
+
# MONGODB CONFIGURATION
|
|
204
|
+
# -----------------------------------------------------------------------------
|
|
205
|
+
# Used when JVSPATIAL_DB_TYPE=mongodb
|
|
206
|
+
|
|
207
|
+
# MongoDB Connection URI
|
|
208
|
+
# Format: mongodb://[username:password@]host[:port][/database][?options]
|
|
209
|
+
# Examples:
|
|
210
|
+
# - mongodb://localhost:27017 (local, no auth)
|
|
211
|
+
# - mongodb://user:pass@localhost:27017 (local with auth)
|
|
212
|
+
# - mongodb+srv://user:pass@cluster.mongodb.net/ (MongoDB Atlas)
|
|
213
|
+
# - mongodb://mongo1,mongo2,mongo3:27017/?replicaSet=rs0 (replica set)
|
|
214
|
+
JVSPATIAL_MONGODB_URI=mongodb://localhost:27017
|
|
215
|
+
|
|
216
|
+
# MongoDB Database Name
|
|
217
|
+
# The database within MongoDB instance to use for jvspatial data
|
|
218
|
+
# Will be created automatically if it doesn't exist
|
|
219
|
+
JVSPATIAL_MONGODB_DB_NAME=jvdb
|
|
220
|
+
|
|
221
|
+
# -----------------------------------------------------------------------------
|
|
222
|
+
# ENVIRONMENT-SPECIFIC EXAMPLES
|
|
223
|
+
# -----------------------------------------------------------------------------
|
|
224
|
+
|
|
225
|
+
# DEVELOPMENT ENVIRONMENT (Single server, memory cache)
|
|
226
|
+
# Uncomment and modify for development setup:
|
|
227
|
+
# JVSPATIAL_DB_TYPE=json
|
|
228
|
+
# JVSPATIAL_JSONDB_PATH=./jvdb/dev
|
|
229
|
+
# JVSPATIAL_CACHE_BACKEND=memory
|
|
230
|
+
# JVSPATIAL_CACHE_SIZE=1000
|
|
231
|
+
|
|
232
|
+
# TESTING ENVIRONMENT (Smaller cache for faster tests)
|
|
233
|
+
# Uncomment and modify for testing setup:
|
|
234
|
+
# JVSPATIAL_DB_TYPE=json
|
|
235
|
+
# JVSPATIAL_JSONDB_PATH=./jvdb/test
|
|
236
|
+
# JVSPATIAL_CACHE_BACKEND=memory
|
|
237
|
+
# JVSPATIAL_CACHE_SIZE=100
|
|
238
|
+
|
|
239
|
+
# PRODUCTION ENVIRONMENT (MongoDB + Layered cache with Redis)
|
|
240
|
+
# Uncomment and modify for production setup:
|
|
241
|
+
# JVSPATIAL_DB_TYPE=mongodb
|
|
242
|
+
# JVSPATIAL_MONGODB_URI=mongodb+srv://production_user:secure_password@production-cluster.mongodb.net/
|
|
243
|
+
# JVSPATIAL_MONGODB_DB_NAME=jvspatial_production
|
|
244
|
+
# JVSPATIAL_CACHE_BACKEND=layered
|
|
245
|
+
# JVSPATIAL_L1_CACHE_SIZE=500
|
|
246
|
+
# JVSPATIAL_REDIS_URL=redis://redis-cache:6379
|
|
247
|
+
# JVSPATIAL_REDIS_TTL=3600
|
|
248
|
+
|
|
249
|
+
# KUBERNETES/DOCKER ENVIRONMENT (Multi-instance with Redis)
|
|
250
|
+
# Uncomment and modify for Kubernetes/containerized setup:
|
|
251
|
+
# JVSPATIAL_DB_TYPE=mongodb
|
|
252
|
+
# JVSPATIAL_MONGODB_URI=mongodb://mongo_container:27017
|
|
253
|
+
# JVSPATIAL_MONGODB_DB_NAME=jvspatial_docker
|
|
254
|
+
# JVSPATIAL_CACHE_BACKEND=layered
|
|
255
|
+
# JVSPATIAL_L1_CACHE_SIZE=500
|
|
256
|
+
# JVSPATIAL_REDIS_URL=redis://redis-service:6379/0
|
|
257
|
+
# JVSPATIAL_REDIS_TTL=3600
|
|
258
|
+
|
|
259
|
+
# -----------------------------------------------------------------------------
|
|
260
|
+
# WALKER INFINITE WALK PROTECTION
|
|
261
|
+
# -----------------------------------------------------------------------------
|
|
262
|
+
# Configure protection mechanisms to prevent infinite loops and runaway traversals
|
|
263
|
+
|
|
264
|
+
# Enable/disable walker protection mechanisms
|
|
265
|
+
# Options: true, false
|
|
266
|
+
# Default: true
|
|
267
|
+
JVSPATIAL_WALKER_PROTECTION_ENABLED=true
|
|
268
|
+
|
|
269
|
+
# Maximum number of steps a walker can take before auto-halt
|
|
270
|
+
# Set to 0 to disable step limit (not recommended)
|
|
271
|
+
# Default: 10000
|
|
272
|
+
JVSPATIAL_WALKER_MAX_STEPS=10000
|
|
273
|
+
|
|
274
|
+
# Maximum times a single node can be visited before auto-halt
|
|
275
|
+
# Prevents excessive cycles and infinite loops
|
|
276
|
+
# Default: 100
|
|
277
|
+
JVSPATIAL_WALKER_MAX_VISITS_PER_NODE=100
|
|
278
|
+
|
|
279
|
+
# Maximum execution time in seconds before auto-halt
|
|
280
|
+
# Prevents indefinitely running walkers
|
|
281
|
+
# Default: 300.0 (5 minutes)
|
|
282
|
+
JVSPATIAL_WALKER_MAX_EXECUTION_TIME=300.0
|
|
283
|
+
|
|
284
|
+
# Maximum queue size before limiting new additions
|
|
285
|
+
# Prevents memory overflow from excessive queuing
|
|
286
|
+
# Default: 1000
|
|
287
|
+
JVSPATIAL_WALKER_MAX_QUEUE_SIZE=1000
|
|
288
|
+
|
|
289
|
+
# -----------------------------------------------------------------------------
|
|
290
|
+
# ENVIRONMENT-SPECIFIC PROTECTION EXAMPLES
|
|
291
|
+
# -----------------------------------------------------------------------------
|
|
292
|
+
|
|
293
|
+
# DEVELOPMENT ENVIRONMENT (More permissive)
|
|
294
|
+
# JVSPATIAL_WALKER_MAX_STEPS=50000
|
|
295
|
+
# JVSPATIAL_WALKER_MAX_VISITS_PER_NODE=200
|
|
296
|
+
# JVSPATIAL_WALKER_MAX_EXECUTION_TIME=600.0
|
|
297
|
+
|
|
298
|
+
# TESTING ENVIRONMENT (Stricter limits for faster test execution)
|
|
299
|
+
# JVSPATIAL_WALKER_MAX_STEPS=1000
|
|
300
|
+
# JVSPATIAL_WALKER_MAX_VISITS_PER_NODE=10
|
|
301
|
+
# JVSPATIAL_WALKER_MAX_EXECUTION_TIME=30.0
|
|
302
|
+
|
|
303
|
+
# PRODUCTION ENVIRONMENT (Balanced limits)
|
|
304
|
+
# JVSPATIAL_WALKER_MAX_STEPS=10000
|
|
305
|
+
# JVSPATIAL_WALKER_MAX_VISITS_PER_NODE=100
|
|
306
|
+
# JVSPATIAL_WALKER_MAX_EXECUTION_TIME=300.0
|
|
307
|
+
|
|
308
|
+
# -----------------------------------------------------------------------------
|
|
309
|
+
# WEBHOOK CONFIGURATION
|
|
310
|
+
# -----------------------------------------------------------------------------
|
|
311
|
+
# Configure webhook processing, security, and performance settings
|
|
312
|
+
|
|
313
|
+
# Global HMAC Secret for Webhook Verification
|
|
314
|
+
# Use a cryptographically secure secret (minimum 32 characters)
|
|
315
|
+
# Can be overridden per-endpoint in decorator parameters
|
|
316
|
+
# Example: openssl rand -hex 32
|
|
317
|
+
JVSPATIAL_WEBHOOK_HMAC_SECRET=your-webhook-hmac-secret-replace-in-production
|
|
318
|
+
|
|
319
|
+
# HMAC Algorithm for Signature Verification
|
|
320
|
+
# Options: sha256, sha1, sha512
|
|
321
|
+
# Default: sha256 (recommended)
|
|
322
|
+
JVSPATIAL_WEBHOOK_HMAC_ALGORITHM=sha256
|
|
323
|
+
|
|
324
|
+
# Maximum Webhook Payload Size (bytes)
|
|
325
|
+
# Prevents memory exhaustion from large payloads
|
|
326
|
+
# Default: 1048576 (1MB)
|
|
327
|
+
JVSPATIAL_WEBHOOK_MAX_PAYLOAD_SIZE=1048576
|
|
328
|
+
|
|
329
|
+
# Webhook Idempotency TTL (seconds)
|
|
330
|
+
# How long to store idempotency keys for duplicate detection
|
|
331
|
+
# Default: 3600 (1 hour)
|
|
332
|
+
JVSPATIAL_WEBHOOK_IDEMPOTENCY_TTL=3600
|
|
333
|
+
|
|
334
|
+
# Require HTTPS for Webhook Endpoints
|
|
335
|
+
# Options: true, false
|
|
336
|
+
# Default: true (highly recommended for production)
|
|
337
|
+
JVSPATIAL_WEBHOOK_HTTPS_REQUIRED=true
|
|
338
|
+
|
|
339
|
+
# Service-Specific Webhook Secrets (Optional)
|
|
340
|
+
# These override the global HMAC secret for specific services
|
|
341
|
+
# JVSPATIAL_WEBHOOK_STRIPE_SECRET=whsec_your_stripe_webhook_secret
|
|
342
|
+
# JVSPATIAL_WEBHOOK_GITHUB_SECRET=your_github_webhook_secret
|
|
343
|
+
# JVSPATIAL_WEBHOOK_SLACK_SECRET=your_slack_webhook_secret
|
|
344
|
+
|
|
345
|
+
# -----------------------------------------------------------------------------
|
|
346
|
+
# AUTHENTICATION & JWT CONFIGURATION
|
|
347
|
+
# -----------------------------------------------------------------------------
|
|
348
|
+
# Configure user authentication, JWT tokens, and API security
|
|
349
|
+
|
|
350
|
+
# JWT Secret Key for Token Signing
|
|
351
|
+
# Use a cryptographically secure secret (minimum 32 characters)
|
|
352
|
+
# CRITICAL: Change this in production!
|
|
353
|
+
# Example: python -c "import secrets; print(secrets.token_urlsafe(32))"
|
|
354
|
+
JVSPATIAL_JWT_SECRET_KEY=your-jwt-secret-key-replace-in-production
|
|
355
|
+
|
|
356
|
+
# JWT Algorithm for Token Signing
|
|
357
|
+
# Options: HS256, HS384, HS512, RS256, etc.
|
|
358
|
+
# Default: HS256
|
|
359
|
+
JVSPATIAL_JWT_ALGORITHM=HS256
|
|
360
|
+
|
|
361
|
+
# JWT Token Expiration (hours)
|
|
362
|
+
# How long access tokens remain valid
|
|
363
|
+
# Default: 24 hours
|
|
364
|
+
JVSPATIAL_JWT_EXPIRATION_HOURS=24
|
|
365
|
+
|
|
366
|
+
# JWT Refresh Token Expiration (days)
|
|
367
|
+
# How long refresh tokens remain valid
|
|
368
|
+
# Default: 30 days
|
|
369
|
+
JVSPATIAL_JWT_REFRESH_EXPIRATION_DAYS=30
|
|
370
|
+
|
|
371
|
+
# API Key Configuration
|
|
372
|
+
# Header name for API key authentication
|
|
373
|
+
JVSPATIAL_API_KEY_HEADER=X-API-Key
|
|
374
|
+
|
|
375
|
+
# Query parameter name for API key authentication
|
|
376
|
+
JVSPATIAL_API_KEY_QUERY_PARAM=api_key
|
|
377
|
+
|
|
378
|
+
# Rate Limiting Configuration
|
|
379
|
+
# Enable/disable rate limiting
|
|
380
|
+
# Options: true, false
|
|
381
|
+
# Default: true
|
|
382
|
+
JVSPATIAL_RATE_LIMIT_ENABLED=true
|
|
383
|
+
|
|
384
|
+
# Default rate limit per hour for authenticated users
|
|
385
|
+
# Default: 1000 requests per hour
|
|
386
|
+
JVSPATIAL_DEFAULT_RATE_LIMIT_PER_HOUR=1000
|
|
387
|
+
|
|
388
|
+
# Security Configuration
|
|
389
|
+
# Require HTTPS for authentication endpoints
|
|
390
|
+
# Options: true, false
|
|
391
|
+
# Default: true (required for production)
|
|
392
|
+
JVSPATIAL_REQUIRE_HTTPS=true
|
|
393
|
+
|
|
394
|
+
# Session Cookie Security
|
|
395
|
+
# Make session cookies secure (HTTPS only)
|
|
396
|
+
# Options: true, false
|
|
397
|
+
# Default: true
|
|
398
|
+
JVSPATIAL_SESSION_COOKIE_SECURE=true
|
|
399
|
+
|
|
400
|
+
# Session Cookie HTTP Only
|
|
401
|
+
# Prevent JavaScript access to session cookies
|
|
402
|
+
# Options: true, false
|
|
403
|
+
# Default: true
|
|
404
|
+
JVSPATIAL_SESSION_COOKIE_HTTPONLY=true
|
|
405
|
+
|
|
406
|
+
# -----------------------------------------------------------------------------
|
|
407
|
+
# FILE STORAGE CONFIGURATION
|
|
408
|
+
# -----------------------------------------------------------------------------
|
|
409
|
+
# Configure file storage backend and settings
|
|
410
|
+
|
|
411
|
+
# Enable/disable file storage
|
|
412
|
+
# Options: true, false
|
|
413
|
+
# Default: false
|
|
414
|
+
JVSPATIAL_FILE_STORAGE_ENABLED=false
|
|
415
|
+
|
|
416
|
+
# File storage provider
|
|
417
|
+
# Options: 'local' or 's3'
|
|
418
|
+
# Default: 'local'
|
|
419
|
+
JVSPATIAL_FILE_STORAGE_PROVIDER=local
|
|
420
|
+
|
|
421
|
+
# Root directory for local file storage
|
|
422
|
+
# Default: '.files'
|
|
423
|
+
JVSPATIAL_FILE_STORAGE_ROOT=.files
|
|
424
|
+
|
|
425
|
+
# Base URL for file access
|
|
426
|
+
# Default: 'http://localhost:8000'
|
|
427
|
+
JVSPATIAL_FILE_STORAGE_BASE_URL=http://localhost:8000
|
|
428
|
+
|
|
429
|
+
# Maximum file size in bytes
|
|
430
|
+
# Default: 104857600 (100MB)
|
|
431
|
+
JVSPATIAL_FILE_STORAGE_MAX_SIZE=104857600
|
|
432
|
+
|
|
433
|
+
# S3 Configuration (when using 's3' provider)
|
|
434
|
+
JVSPATIAL_S3_BUCKET_NAME=your-bucket-name
|
|
435
|
+
JVSPATIAL_S3_REGION=us-east-1
|
|
436
|
+
JVSPATIAL_S3_ACCESS_KEY=your-access-key
|
|
437
|
+
JVSPATIAL_S3_SECRET_KEY=your-secret-key
|
|
438
|
+
JVSPATIAL_S3_ENDPOINT_URL=https://s3.amazonaws.com
|
|
439
|
+
|
|
440
|
+
# URL Proxy Configuration
|
|
441
|
+
# Enable URL proxy system for short URLs
|
|
442
|
+
# Default: false
|
|
443
|
+
JVSPATIAL_PROXY_ENABLED=false
|
|
444
|
+
|
|
445
|
+
# Default proxy URL expiration in seconds
|
|
446
|
+
# Default: 3600 (1 hour)
|
|
447
|
+
JVSPATIAL_PROXY_DEFAULT_EXPIRATION=3600
|
|
448
|
+
|
|
449
|
+
# Maximum proxy URL expiration in seconds
|
|
450
|
+
# Default: 86400 (24 hours)
|
|
451
|
+
JVSPATIAL_PROXY_MAX_EXPIRATION=86400
|
|
452
|
+
|
|
453
|
+
# -----------------------------------------------------------------------------
|
|
454
|
+
# ENVIRONMENT-SPECIFIC WEBHOOK EXAMPLES
|
|
455
|
+
# -----------------------------------------------------------------------------
|
|
456
|
+
|
|
457
|
+
# DEVELOPMENT ENVIRONMENT (Relaxed security for testing)
|
|
458
|
+
# JVSPATIAL_WEBHOOK_HTTPS_REQUIRED=false
|
|
459
|
+
# JVSPATIAL_WEBHOOK_HMAC_SECRET=dev-webhook-secret-not-for-production
|
|
460
|
+
# JVSPATIAL_JWT_SECRET_KEY=dev-jwt-secret-not-for-production
|
|
461
|
+
# JVSPATIAL_REQUIRE_HTTPS=false
|
|
462
|
+
# JVSPATIAL_SESSION_COOKIE_SECURE=false
|
|
463
|
+
|
|
464
|
+
# TESTING ENVIRONMENT (Minimal security for fast tests)
|
|
465
|
+
# JVSPATIAL_WEBHOOK_HTTPS_REQUIRED=false
|
|
466
|
+
# JVSPATIAL_WEBHOOK_IDEMPOTENCY_TTL=60
|
|
467
|
+
# JVSPATIAL_JWT_EXPIRATION_HOURS=1
|
|
468
|
+
# JVSPATIAL_RATE_LIMIT_ENABLED=false
|
|
469
|
+
|
|
470
|
+
# PRODUCTION ENVIRONMENT (Maximum security)
|
|
471
|
+
# JVSPATIAL_WEBHOOK_HTTPS_REQUIRED=true
|
|
472
|
+
# JVSPATIAL_WEBHOOK_HMAC_SECRET=prod-webhook-secret-64-chars-minimum
|
|
473
|
+
# JVSPATIAL_JWT_SECRET_KEY=prod-jwt-secret-64-chars-minimum
|
|
474
|
+
# JVSPATIAL_REQUIRE_HTTPS=true
|
|
475
|
+
# JVSPATIAL_SESSION_COOKIE_SECURE=true
|
|
476
|
+
# JVSPATIAL_DEFAULT_RATE_LIMIT_PER_HOUR=500
|
|
477
|
+
|
|
478
|
+
# -----------------------------------------------------------------------------
|
|
479
|
+
# SECURITY NOTES
|
|
480
|
+
# -----------------------------------------------------------------------------
|
|
481
|
+
#
|
|
482
|
+
# 1. CRITICAL: Never commit .env files with real secrets to version control
|
|
483
|
+
# 2. Use cryptographically secure secrets (minimum 32 characters)
|
|
484
|
+
# 3. Rotate secrets regularly in production
|
|
485
|
+
# 4. Use strong passwords for MongoDB authentication
|
|
486
|
+
# 5. Restrict MongoDB network access in production
|
|
487
|
+
# 6. Use MongoDB Atlas or properly secured self-hosted instances
|
|
488
|
+
# 7. Consider using secrets management in production (AWS Secrets Manager, etc.)
|
|
489
|
+
# 8. Enable HTTPS in production for all authentication endpoints
|
|
490
|
+
# 9. Use secure session cookies in production
|
|
491
|
+
# 10. Monitor webhook endpoints for suspicious activity
|
|
492
|
+
#
|
|
493
|
+
# -----------------------------------------------------------------------------
|
jvspatial-0.0.1/.flake8
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[flake8]
|
|
2
|
+
max-line-length = 88
|
|
3
|
+
extend-ignore = E203, E266, E501, W503, ANN101, ANN102, ANN204, ANN201, ANN001, ANN003, ANN202, D107, D202, D401
|
|
4
|
+
exclude =
|
|
5
|
+
.git,
|
|
6
|
+
__pycache__,
|
|
7
|
+
.venv,
|
|
8
|
+
.pytest_cache,
|
|
9
|
+
.vscode,
|
|
10
|
+
build,
|
|
11
|
+
dist,
|
|
12
|
+
docs,
|
|
13
|
+
migrations
|
|
14
|
+
per-file-ignores =
|
|
15
|
+
tests/*: E402
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to report any bugs in jvspatial
|
|
4
|
+
title: "[BUG]: "
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Describe the bug**
|
|
11
|
+
A clear and concise description of what the bug is.
|
|
12
|
+
|
|
13
|
+
**To Reproduce**
|
|
14
|
+
Steps to reproduce the behavior:
|
|
15
|
+
1. Go to '...'
|
|
16
|
+
2. Click on '....'
|
|
17
|
+
3. Scroll down to '....'
|
|
18
|
+
4. See error
|
|
19
|
+
|
|
20
|
+
**Expected behavior**
|
|
21
|
+
A clear and concise description of what you expected to happen.
|
|
22
|
+
|
|
23
|
+
**Screenshots**
|
|
24
|
+
If applicable, add screenshots to help explain your problem.
|
|
25
|
+
|
|
26
|
+
**Environment (please complete the following information):**
|
|
27
|
+
- Python Version [e.g. 3.12]
|
|
28
|
+
- Jaclang Version [e.g. 0.7.27]
|
|
29
|
+
- Jivas Version [e.g. 2.0.0]
|
|
30
|
+
- jvspatial Version [e.g 0.0.1]
|
|
31
|
+
|
|
32
|
+
**Additional context**
|
|
33
|
+
Add any other context about the problem here.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for jvspatial
|
|
4
|
+
title: "[Feature Request]: "
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
|
11
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
12
|
+
|
|
13
|
+
**Describe the solution you'd like**
|
|
14
|
+
A clear and concise description of what you want to happen.
|
|
15
|
+
|
|
16
|
+
**Describe alternatives you've considered**
|
|
17
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
18
|
+
|
|
19
|
+
**Additional context**
|
|
20
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Refactor Request
|
|
3
|
+
about: Request a refactor to core jvspatial functionality
|
|
4
|
+
title: "[Refactor Request]: "
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
Provide a brief description of the refactor you are proposing. Focus on the high-level goal of the change.
|
|
12
|
+
|
|
13
|
+
## Current Problem
|
|
14
|
+
Describe the current issues with the existing code. Examples:
|
|
15
|
+
- Poor readability or maintainability
|
|
16
|
+
- Duplication of code
|
|
17
|
+
- Performance bottlenecks
|
|
18
|
+
- Lack of extensibility
|
|
19
|
+
|
|
20
|
+
## Proposed Solution
|
|
21
|
+
Explain the refactor you are suggesting:
|
|
22
|
+
- Outline how the code will be reorganized, improved, or optimized.
|
|
23
|
+
- Specify any best practices or patterns you aim to implement.
|
|
24
|
+
- Highlight tools, libraries, or approaches you plan to leverage.
|
|
25
|
+
|
|
26
|
+
## Expected Benefits
|
|
27
|
+
Describe the outcomes and benefits of this refactor:
|
|
28
|
+
- Enhanced code quality
|
|
29
|
+
- Improved maintainability
|
|
30
|
+
- Better performance
|
|
31
|
+
- Simplified debugging or testing
|
|
32
|
+
|
|
33
|
+
## Scope of Changes
|
|
34
|
+
List the modules, files, or components that are likely to be impacted:
|
|
35
|
+
- [ ] Module/File 1
|
|
36
|
+
- [ ] Module/File 2
|
|
37
|
+
- [ ] Component 3
|
|
38
|
+
|
|
39
|
+
## Additional Notes
|
|
40
|
+
Include any additional context or examples that will help clarify the refactor. Add links to related issues, discussions, or documentation, if applicable.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
## **Type of Change**
|
|
2
|
+
What type of change does this PR introduce? Mark all that apply:
|
|
3
|
+
- [ ] π Bug Fix
|
|
4
|
+
- [ ] π Feature Request
|
|
5
|
+
- [ ] π Refactor
|
|
6
|
+
- [ ] π Documentation Update
|
|
7
|
+
- [ ] π§ Other (Please specify):
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## **Summary**
|
|
12
|
+
### **What does this PR address?**
|
|
13
|
+
Provide a concise summary of the changes introduced in this pull request. Specify if it resolves an issue, adds a feature, or refactors code.
|
|
14
|
+
|
|
15
|
+
For example:
|
|
16
|
+
- Resolves #ISSUE_ID
|
|
17
|
+
- Adds feature for X
|
|
18
|
+
- Refactors Y to improve Z
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## **Description**
|
|
23
|
+
### **Bug Fixes**:
|
|
24
|
+
If this PR fixes a bug, please provide:
|
|
25
|
+
- A brief description of the bug.
|
|
26
|
+
- The root cause of the issue.
|
|
27
|
+
- How this PR resolves the issue.
|
|
28
|
+
|
|
29
|
+
### **Feature Request**:
|
|
30
|
+
If this PR adds a new feature, please provide:
|
|
31
|
+
- A brief description of the feature.
|
|
32
|
+
- The motivation for introducing it.
|
|
33
|
+
- Any relevant details about implementation.
|
|
34
|
+
|
|
35
|
+
### **Refactor Request**:
|
|
36
|
+
If this PR refactors code, please provide:
|
|
37
|
+
- The specific area of code refactored.
|
|
38
|
+
- The problem with the current implementation.
|
|
39
|
+
- The improvements made in the refactor.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## **Changes Made**
|
|
44
|
+
### High-Level Summary:
|
|
45
|
+
List the key changes made in this PR:
|
|
46
|
+
1. Change 1
|
|
47
|
+
2. Change 2
|
|
48
|
+
3. Change 3
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## **Checklist**
|
|
53
|
+
Mark all that apply:
|
|
54
|
+
- [ ] Code follows the projectβs coding guidelines.
|
|
55
|
+
- [ ] Tests have been added or updated for new functionality.
|
|
56
|
+
- [ ] Documentation has been updated (if applicable).
|
|
57
|
+
- [ ] Existing tests pass locally with these changes.
|
|
58
|
+
- [ ] Any dependencies introduced are justified and documented.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## **Steps to Test**
|
|
63
|
+
Provide a clear set of steps for testing the changes introduced in this PR:
|
|
64
|
+
1. Step 1
|
|
65
|
+
2. Step 2
|
|
66
|
+
3. Step 3
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## **Additional Context**
|
|
71
|
+
If necessary, provide additional context, screenshots, or relevant references for the changes in this PR.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## **Questions or Concerns**
|
|
76
|
+
Are there any open questions or areas of concern related to this PR? If so, mention them here.
|