reqlanOverviewIdeasFilesCode filesClustersAttributesGraphPrint
Ideas/configuration_import_roots

Idea detail

configuration_import_roots

reqlan rq/extension/configuration.rq:31

block

Summary

`importRoots` is an optional array of alias-to-directory mappings in `.reqlan/config.json`.
Each mapping has:
- `alias` ( required non-empty string ): prefix before `/` in aliased import paths.
- `root` ( optional non-empty string ): directory for that alias.
A relative `root` resolves against the base root ( the parent of `.reqlan` ), not against the `.reqlan` directory.
An absolute path or `file://` URI is used as that alias' import-root directory directly.
When `root` is omitted for a mapping, that alias uses the workspace folder that contains the `.rq` file.
When `importRoots` is omitted, empty, or has no valid entries, the default is one mapping with alias `@` and no explicit root.
When several aliases could match a path, the longest alias wins.
Invalid or unreadable JSON, and a non-array `importRoots` value, fall back to defaults ( or no loaded config for discovery, then defaults at resolve time ).
Language path forms and `@/` shorthand: import_paths and configuration_import_root_alias.
Schema: configuration_schema_file. Applying file discovery: configuration_location.
Editor completion of aliased import paths: code_completion.

Jump to outbound references

Jump to inbound references

Navigation

Source file

reqlan rq/extension/configuration.rq

community 10

community cluster

configuration.rq

file cluster

reqlan rq/extension

folder cluster

status: Not present

status cluster

tag: Not present

tag cluster

Printable page

Static print-friendly idea sheet.

Attributes

KeyValue
implementation reqlan-path-resolve.ts, file-path-rewrite.ts, reqlan-completion-provider.ts, reqlan-path-completion.ts, config.schema.json
tests config.test.ts:empty object uses default alias mapping, config.test.ts:importRoots alias only overrides the alias, config.test.ts:relative root resolves against the base root, config.test.ts:absolute filesystem root is used directly, config.test.ts:file URI root is used directly, config.test.ts:multiple importRoots map aliases to different roots, config.test.ts:longest alias wins when mappings overlap, config.test.ts:empty string alias entries are skipped, config.test.ts:empty string root is ignored on a mapping, config.test.ts:invalid importRoots entries are skipped, config.test.ts:unknown properties are ignored while known keys still apply, config.test.ts:invalid JSON falls back to undefined load, config.test.ts:non-object JSON falls back to undefined load, config.test.ts:non-array importRoots falls back to undefined load, config.test.ts:empty importRoots array uses default alias mapping, config.test.ts:resolveRqConfig falls back to defaults when applying JSON is invalid, config.test.ts:aliased path uses relative root from applying config, config.test.ts:aliased path uses workspace folder when root is omitted, path-resolve.test.ts:loads importRoots list from nearest base config, path-resolve.test.ts:resolves using config importRoots mapping, path-resolve.test.ts:rewrite leaves aliased paths unchanged, completion.test.ts:completes import-root alias paths

Browse all attributes

Ancestor context

configuration_schema_file

The machine-readable JSON Schema for `.reqlan/config.json` is ["../../packages/extension/schemas/config.schema.json"]. The extension contributes that schema for `**/.reqlan/config.json` via `jsonValidation` in ["../../packages/extension/package.json"]. `.reqlan/config.json` is a JSON object. Unknown properties are not part of the schema and are ignored when loading.

configuration_location

An optional `.reqlan/config.json` may appear under a base's `.reqlan` directory. For a given `.rq` file, the applying base is the nearest ancestor directory that owns a `.reqlan` folder. The applying config is that base's `.reqlan/config.json` when present. If the owning base has no `config.json`, or no owning base is found, defaults from [configuration_import_roots] apply. A child base does not inherit a parent base's config. Implemented by ["../../packages/language/src/reqlan-path-resolve.ts"].

Outbound references

KindIdeaPathSnippet
file_reference ../../packages/extension/schemas/config.schema.json packages/extension/schemas/config.schema.json config.schema.json
file_reference ../../packages/language/src/file-path-rewrite.ts packages/language/src/file-path-rewrite.ts file-path-rewrite.ts
file_reference ../../packages/language/src/reqlan-completion-provider.ts packages/language/src/reqlan-completion-provider.ts reqlan-completion-provider.ts
file_reference ../../packages/language/src/reqlan-path-completion.ts packages/language/src/reqlan-path-completion.ts reqlan-path-completion.ts
file_reference ../../packages/language/src/reqlan-path-resolve.ts packages/language/src/reqlan-path-resolve.ts reqlan-path-resolve.ts
file_reference ../../packages/language/test/completion.test.ts:completes import-root alias paths packages/language/test/completion.test.ts:completes import-root alias paths completion.test.ts:completes import-root alias paths
file_reference ../../packages/language/test/config.test.ts:absolute filesystem root is used directly packages/language/test/config.test.ts:absolute filesystem root is used directly config.test.ts:absolute filesystem root is used directly
file_reference ../../packages/language/test/config.test.ts:aliased path uses relative root from applying config packages/language/test/config.test.ts:aliased path uses relative root from applying config config.test.ts:aliased path uses relative root from applying config
file_reference ../../packages/language/test/config.test.ts:aliased path uses workspace folder when root is omitted packages/language/test/config.test.ts:aliased path uses workspace folder when root is omitted config.test.ts:aliased path uses workspace folder when root is omitted
file_reference ../../packages/language/test/config.test.ts:empty importRoots array uses default alias mapping packages/language/test/config.test.ts:empty importRoots array uses default alias mapping config.test.ts:empty importRoots array uses default alias mapping
file_reference ../../packages/language/test/config.test.ts:empty object uses default alias mapping packages/language/test/config.test.ts:empty object uses default alias mapping config.test.ts:empty object uses default alias mapping
file_reference ../../packages/language/test/config.test.ts:empty string alias entries are skipped packages/language/test/config.test.ts:empty string alias entries are skipped config.test.ts:empty string alias entries are skipped
file_reference ../../packages/language/test/config.test.ts:empty string root is ignored on a mapping packages/language/test/config.test.ts:empty string root is ignored on a mapping config.test.ts:empty string root is ignored on a mapping
file_reference ../../packages/language/test/config.test.ts:file URI root is used directly packages/language/test/config.test.ts:file URI root is used directly config.test.ts:file URI root is used directly
file_reference ../../packages/language/test/config.test.ts:importRoots alias only overrides the alias packages/language/test/config.test.ts:importRoots alias only overrides the alias config.test.ts:importRoots alias only overrides the alias
file_reference ../../packages/language/test/config.test.ts:invalid JSON falls back to undefined load packages/language/test/config.test.ts:invalid JSON falls back to undefined load config.test.ts:invalid JSON falls back to undefined load
file_reference ../../packages/language/test/config.test.ts:invalid importRoots entries are skipped packages/language/test/config.test.ts:invalid importRoots entries are skipped config.test.ts:invalid importRoots entries are skipped
file_reference ../../packages/language/test/config.test.ts:longest alias wins when mappings overlap packages/language/test/config.test.ts:longest alias wins when mappings overlap config.test.ts:longest alias wins when mappings overlap
file_reference ../../packages/language/test/config.test.ts:multiple importRoots map aliases to different roots packages/language/test/config.test.ts:multiple importRoots map aliases to different roots config.test.ts:multiple importRoots map aliases to different roots
file_reference ../../packages/language/test/config.test.ts:non-array importRoots falls back to undefined load packages/language/test/config.test.ts:non-array importRoots falls back to undefined load config.test.ts:non-array importRoots falls back to undefined load
file_reference ../../packages/language/test/config.test.ts:non-object JSON falls back to undefined load packages/language/test/config.test.ts:non-object JSON falls back to undefined load config.test.ts:non-object JSON falls back to undefined load
file_reference ../../packages/language/test/config.test.ts:relative root resolves against the base root packages/language/test/config.test.ts:relative root resolves against the base root config.test.ts:relative root resolves against the base root
file_reference ../../packages/language/test/config.test.ts:resolveRqConfig falls back to defaults when applying JSON is invalid packages/language/test/config.test.ts:resolveRqConfig falls back to defaults when applying JSON is invalid config.test.ts:resolveRqConfig falls back to defaults when applying JSON is invalid
file_reference ../../packages/language/test/config.test.ts:unknown properties are ignored while known keys still apply packages/language/test/config.test.ts:unknown properties are ignored while known keys still apply config.test.ts:unknown properties are ignored while known keys still apply
file_reference ../../packages/language/test/path-resolve.test.ts:loads importRoots list from nearest base config packages/language/test/path-resolve.test.ts:loads importRoots list from nearest base config path-resolve.test.ts:loads importRoots list from nearest base config
file_reference ../../packages/language/test/path-resolve.test.ts:resolves using config importRoots mapping packages/language/test/path-resolve.test.ts:resolves using config importRoots mapping path-resolve.test.ts:resolves using config importRoots mapping
file_reference ../../packages/language/test/path-resolve.test.ts:rewrite leaves aliased paths unchanged packages/language/test/path-resolve.test.ts:rewrite leaves aliased paths unchanged path-resolve.test.ts:rewrite leaves aliased paths unchanged
references configuration_location reqlan rq/extension/configuration.rq configuration_location
references configuration_schema_file reqlan rq/extension/configuration.rq configuration_schema_file

Inbound references

KindIdeaPathSnippet
references configuration_location reqlan rq/extension/configuration.rq configuration_import_roots

Unresolved references

KindIdeaPathSnippet
references code_completion code_completion
references configuration_import_root_alias configuration_import_root_alias
references import_paths import_paths

Local graph

Initialising graph…