# `nupp.io.path.spi` Implementation interfaces consumed during ordinary module initialization. Discover with nupp.spi.load; the consumer chooses the unique highest priority. Omitted priority is zero. Importing these declarations loads no implementation. ## Types ### `Provider` _interface_ ```nupp interface Provider ... ``` Environmental path facts, independent of lexical path manipulation. separator reports the host convention. currentDirectory and canonicalize may return nil with an explanatory message when the host has no such facility or an operating-system operation fails. Public Path identity remains in nupp.io.path. #### Members | Name | Kind | Description | | --- | --- | --- | | [`priority`](#nupp.io.path.spi.Provider.priority) | field | | | [`separator`](#nupp.io.path.spi.Provider.separator) | method | Returns the host path separator. | | [`currentDirectory`](#nupp.io.path.spi.Provider.currentDirectory) | method | Returns the process directory or nil and an environmental error. | | [`canonicalize`](#nupp.io.path.spi.Provider.canonicalize) | method | Resolves a host filesystem path or returns nil and an error. | #### `priority` _field_ ```nupp priority: integer? ``` `@readonly` #### `separator` _method_ ```nupp separator: function(): string ``` `@readonly` Returns the host path separator. ##### Returns | Type | Description | | --- | --- | | `string` | | #### `currentDirectory` _method_ ```nupp currentDirectory: function(): (string?, string?) ``` `@readonly` Returns the process directory or nil and an environmental error. ##### Returns | Type | Description | | --- | --- | | `string?` | | | `string?` | | #### `canonicalize` _method_ ```nupp canonicalize: function(path: string): (string?, string?) ``` `@readonly` Resolves a host filesystem path or returns nil and an error. ##### Arguments | Name | Type | Description | | --- | --- | --- | | `path` | `string` | | ##### Returns | Type | Description | | --- | --- | | `string?` | | | `string?` | |