Skip to content

Latest commit

 

History

History
181 lines (131 loc) · 3.28 KB

common.md

File metadata and controls

181 lines (131 loc) · 3.28 KB

Create, Load, Save

An instance of the axy\sourcemap\SourceMap class is representation of a source map file.

use axy\sourcemap\SourceMap;

$map = new SourceMap();

$map->addPosition([
    'generated' => [
        'line' => 1,
        'column' => 2,
    ],
    'source' => [
        'file' => 'a.js',
        'line' => 5,
        'column' => 3,
    ],
]);

$map->save(__DIR__.'/map.js.map');

The library does not provide different classes for work with existing files and creating new. The SourceMap class can be used for both purposes. You can open an existing file, add new positions and save.

Create an Instance

__construct([array $data [, string $filename])

$data - the data of source map file:

$data = [
    'version' => 3,
    'file' => 'script.js',
    'sourceRoot' => '',
    'sources' => ['a.js', 'b.js'],
    'names' => ['one'],
    'mappings' => 'A',
];
$map = new SourceMap($data);

If the data is not specified then the empty map will be created.

$map = new SourceMap();

The optional argument $filename is specified the "default out file". See below.

Save

save([string $filename, [$jsonFlag = JSON_UNESCAPED_SLASHES])

Saves a source map to the specified file.

$map->save(__DIR__.'/a.js.map');

You can specify flags for json_encode():

$map->save(__DIR__.'/a.js.map', JSON_PRETTY_PRINT);

If the $filename is not specified used default out file (see below).

Load from File

loadFormFile(string $filename):SourceMap

Creates an instance on the basis of file.

$map = SourceMap::loadFromFile(__DIR__.'/b.js.map');

Get Data

The current state of the data can be get as follows:

print_r($map->getData());

Magic Properties

The fields of a source map file available as magic properties of an source map instance.

  • version
  • file
  • sourceRoot
  • sources
  • names

At the moment, $map->version always contains 3.

file and sourceRoot are strings. They can be read and modify.

$map = SourceMap::loadFromFile('map.map');
echo $map->file;
$map->file = 'new-file.js';
$map->save();

sources and names are object wrappers. See Sources and Names.

sourcesContent available via sources.

mappings are not directly accessible.

Default out file

The file name which is saved unless otherwise indicated. Sets by loadFromFile().

$map = SourceMap::loadFromFile('a.map.js');
// ...
$map->save(); // save to a.map.js

You can specify it in the constructor:

$map = new SourceMap(null, 'a.map.js');
// ...
$map->save();

Or directly:

$map = new SourceMap();
$map->outFileName = 'a.map.js';

Save() with argument changes it.

$map = SourceMap::loadFromFile('a.map.js');
// ...
$map->save(); // save to a.map.js
// ...
$map->save('b.map.js'); // save to b.map.js
// ...
$map->save(); // save to b.map.js

If the outFileName is not specified then save without argument throws an exception:

$map = new SourceMap();
// ...
$map->save(); // error

Interfaces

For SourceMap implements the following interfaces:

  • ArrayAccess (['file'], ['sourceRoot'] and other magic properties)
  • IteratorAggregate (iterate the data)
  • Serializable
  • JsonSerializable
  • Countable