@fgv/ts-res 5.1.0-0 → 5.1.0-10
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/packlets/import/importManager.js +7 -3
- package/dist/packlets/import/importers/fsItemImporter.js +29 -13
- package/dist/ts-res.d.ts +26 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/packlets/import/importManager.d.ts +15 -1
- package/lib/packlets/import/importManager.js +7 -3
- package/lib/packlets/import/importers/fsItemImporter.d.ts +15 -1
- package/lib/packlets/import/importers/fsItemImporter.js +28 -12
- package/package.json +12 -10
|
@@ -45,7 +45,7 @@ export class ImportManager {
|
|
|
45
45
|
this._importers = [];
|
|
46
46
|
this.resources = params.resources;
|
|
47
47
|
this.initialContext = (_a = params.initialContext) !== null && _a !== void 0 ? _a : ImportContext.create().orThrow();
|
|
48
|
-
this._importers = Array.from((_b = params.importers) !== null && _b !== void 0 ? _b : ImportManager.getDefaultImporters(this.resources.qualifiers, params.fileTree));
|
|
48
|
+
this._importers = Array.from((_b = params.importers) !== null && _b !== void 0 ? _b : ImportManager.getDefaultImporters(this.resources.qualifiers, params.fileTree, params.fileContentConverter, params.fileContentExtensions));
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Factory method to create a new {@link Import.ImportManager | ImportManager}.
|
|
@@ -81,12 +81,16 @@ export class ImportManager {
|
|
|
81
81
|
* and optional `FileTree`.
|
|
82
82
|
* @param qualifiers - The {@link Qualifiers.IReadOnlyQualifierCollector | qualifiers} to use for the import.
|
|
83
83
|
* @param tree - An optional `FileTree` for importing path items.
|
|
84
|
+
* @param fileContentConverter - An optional converter used to pre-process raw file contents before JSON import
|
|
85
|
+
* validation.
|
|
86
|
+
* @param fileContentExtensions - Optional file extensions which should be parsed using the supplied file
|
|
87
|
+
* content converter.
|
|
84
88
|
* @returns A read-only array of {@link Import.Importers.IImporter | importers}.
|
|
85
89
|
*/
|
|
86
|
-
static getDefaultImporters(qualifiers, tree) {
|
|
90
|
+
static getDefaultImporters(qualifiers, tree, fileContentConverter, fileContentExtensions) {
|
|
87
91
|
return [
|
|
88
92
|
PathImporter.create({ qualifiers, tree }).orThrow(),
|
|
89
|
-
FsItemImporter.create({ qualifiers }).orThrow(),
|
|
93
|
+
FsItemImporter.create({ qualifiers, fileContentConverter, fileContentExtensions }).orThrow(),
|
|
90
94
|
JsonImporter.create().orThrow(),
|
|
91
95
|
CollectionImporter.create().orThrow()
|
|
92
96
|
];
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
20
|
* SOFTWARE.
|
|
21
21
|
*/
|
|
22
|
-
import { captureResult, failWithDetail, succeed, succeedWithDetail
|
|
22
|
+
import { captureResult, failWithDetail, MessageAggregator, succeed, succeedWithDetail } from '@fgv/ts-utils';
|
|
23
23
|
import { Converters as JsonConverters } from '@fgv/ts-json-base';
|
|
24
24
|
import { FsItem } from '../fsItem';
|
|
25
25
|
/**
|
|
@@ -37,6 +37,8 @@ export class FsItemImporter {
|
|
|
37
37
|
*/
|
|
38
38
|
this.types = ['fsItem'];
|
|
39
39
|
this.qualifiers = params.qualifiers;
|
|
40
|
+
this.fileContentConverter = params.fileContentConverter;
|
|
41
|
+
this.fileContentExtensions = params.fileContentExtensions;
|
|
40
42
|
}
|
|
41
43
|
/**
|
|
42
44
|
* Creates a new {@link Import.Importers.FsItemImporter | FsItemImporter}.
|
|
@@ -81,23 +83,37 @@ export class FsItemImporter {
|
|
|
81
83
|
.withDetail('failed', 'processed');
|
|
82
84
|
}
|
|
83
85
|
else if (fsItem.item.type === 'file') {
|
|
84
|
-
if (fsItem.item.extension
|
|
85
|
-
return
|
|
86
|
-
.getContents(JsonConverters.jsonValue)
|
|
87
|
-
.onSuccess((json) => {
|
|
88
|
-
const jsonItem = {
|
|
89
|
-
type: 'json',
|
|
90
|
-
json,
|
|
91
|
-
context
|
|
92
|
-
};
|
|
93
|
-
return succeed([jsonItem]);
|
|
94
|
-
})
|
|
95
|
-
.withDetail('failed', 'processed');
|
|
86
|
+
if (!this._isSupportedFileExtension(fsItem.item.extension)) {
|
|
87
|
+
return succeedWithDetail([], 'skipped');
|
|
96
88
|
}
|
|
89
|
+
return this._getJsonContents(fsItem.item)
|
|
90
|
+
.onSuccess((json) => {
|
|
91
|
+
const jsonItem = {
|
|
92
|
+
type: 'json',
|
|
93
|
+
json,
|
|
94
|
+
context
|
|
95
|
+
};
|
|
96
|
+
return succeed([jsonItem]);
|
|
97
|
+
})
|
|
98
|
+
.withDetail('failed', 'processed');
|
|
97
99
|
}
|
|
98
100
|
/* c8 ignore next 2 - defensive coding: fallback case for unsupported file types */
|
|
99
101
|
return succeedWithDetail([], 'skipped');
|
|
100
102
|
}
|
|
103
|
+
_isSupportedFileExtension(extension) {
|
|
104
|
+
return extension === '.json' || this._canConvertFileExtension(extension);
|
|
105
|
+
}
|
|
106
|
+
_getJsonContents(file) {
|
|
107
|
+
const converter = this.fileContentConverter;
|
|
108
|
+
if (converter !== undefined) {
|
|
109
|
+
return file.getRawContents().onSuccess((contents) => converter.convert(contents));
|
|
110
|
+
}
|
|
111
|
+
return file.getContents(JsonConverters.jsonValue);
|
|
112
|
+
}
|
|
113
|
+
_canConvertFileExtension(extension) {
|
|
114
|
+
var _a;
|
|
115
|
+
return (this.fileContentConverter !== undefined && ((_a = this.fileContentExtensions) === null || _a === void 0 ? void 0 : _a.includes(extension)) === true);
|
|
116
|
+
}
|
|
101
117
|
/**
|
|
102
118
|
* Gets an {@link Import.FsItem | FsItem} from an {@link Import.IImportable | importable}.
|
|
103
119
|
* @param item - The importable to convert.
|
package/dist/ts-res.d.ts
CHANGED
|
@@ -2824,6 +2824,14 @@ declare class FsItemImporter implements IImporter {
|
|
|
2824
2824
|
* The {@link Qualifiers.IReadOnlyQualifierCollector | qualifier collector} to use for this importer.
|
|
2825
2825
|
*/
|
|
2826
2826
|
readonly qualifiers: IReadOnlyQualifierCollector;
|
|
2827
|
+
/**
|
|
2828
|
+
* Optional converter used to parse raw file contents before they are exposed as JSON importables.
|
|
2829
|
+
*/
|
|
2830
|
+
readonly fileContentConverter?: Converter<JsonValue>;
|
|
2831
|
+
/**
|
|
2832
|
+
* Optional list of file extensions which should be parsed using the file content converter.
|
|
2833
|
+
*/
|
|
2834
|
+
readonly fileContentExtensions?: ReadonlyArray<string>;
|
|
2827
2835
|
/**
|
|
2828
2836
|
* The types of {@link Import.IImportable | importables} that this importer can handle.
|
|
2829
2837
|
*/
|
|
@@ -2843,6 +2851,9 @@ declare class FsItemImporter implements IImporter {
|
|
|
2843
2851
|
* {@inheritdoc Import.Importers.IImporter.import}
|
|
2844
2852
|
*/
|
|
2845
2853
|
import(item: IImportable, __manager: ResourceManagerBuilder): DetailedResult<IImportable[], ImporterResultDetail>;
|
|
2854
|
+
private _isSupportedFileExtension;
|
|
2855
|
+
private _getJsonContents;
|
|
2856
|
+
private _canConvertFileExtension;
|
|
2846
2857
|
/**
|
|
2847
2858
|
* Gets an {@link Import.FsItem | FsItem} from an {@link Import.IImportable | importable}.
|
|
2848
2859
|
* @param item - The importable to convert.
|
|
@@ -4021,6 +4032,8 @@ declare const identifierList: RegExp;
|
|
|
4021
4032
|
*/
|
|
4022
4033
|
declare interface IFsItemImporterCreateParams {
|
|
4023
4034
|
qualifiers: IReadOnlyQualifierCollector;
|
|
4035
|
+
fileContentConverter?: Converter<JsonValue>;
|
|
4036
|
+
fileContentExtensions?: ReadonlyArray<string>;
|
|
4024
4037
|
}
|
|
4025
4038
|
|
|
4026
4039
|
/**
|
|
@@ -4204,6 +4217,14 @@ declare interface IImporterCreateParams {
|
|
|
4204
4217
|
* An optional list of {@link Import.Importers.IImporter | importers} to use for the import.
|
|
4205
4218
|
*/
|
|
4206
4219
|
importers?: IImporter[];
|
|
4220
|
+
/**
|
|
4221
|
+
* An optional converter used to pre-process file contents before JSON import validation.
|
|
4222
|
+
*/
|
|
4223
|
+
fileContentConverter?: Converter<JsonValue>;
|
|
4224
|
+
/**
|
|
4225
|
+
* Optional file extensions which should be parsed using the supplied file content converter.
|
|
4226
|
+
*/
|
|
4227
|
+
fileContentExtensions?: ReadonlyArray<string>;
|
|
4207
4228
|
}
|
|
4208
4229
|
|
|
4209
4230
|
/**
|
|
@@ -4717,9 +4738,13 @@ declare class ImportManager {
|
|
|
4717
4738
|
* and optional `FileTree`.
|
|
4718
4739
|
* @param qualifiers - The {@link Qualifiers.IReadOnlyQualifierCollector | qualifiers} to use for the import.
|
|
4719
4740
|
* @param tree - An optional `FileTree` for importing path items.
|
|
4741
|
+
* @param fileContentConverter - An optional converter used to pre-process raw file contents before JSON import
|
|
4742
|
+
* validation.
|
|
4743
|
+
* @param fileContentExtensions - Optional file extensions which should be parsed using the supplied file
|
|
4744
|
+
* content converter.
|
|
4720
4745
|
* @returns A read-only array of {@link Import.Importers.IImporter | importers}.
|
|
4721
4746
|
*/
|
|
4722
|
-
static getDefaultImporters(qualifiers: IReadOnlyQualifierCollector, tree?: FileTree.FileTree): ReadonlyArray<IImporter>;
|
|
4747
|
+
static getDefaultImporters(qualifiers: IReadOnlyQualifierCollector, tree?: FileTree.FileTree, fileContentConverter?: Converter<JsonValue>, fileContentExtensions?: ReadonlyArray<string>): ReadonlyArray<IImporter>;
|
|
4723
4748
|
/**
|
|
4724
4749
|
* Imports any items on the import stack.
|
|
4725
4750
|
* @returns `Success` with the {@link Import.ImportManager | ImportManager} if successful,
|
package/dist/tsdoc-metadata.json
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Result } from '@fgv/ts-utils';
|
|
2
2
|
import { FileTree } from '@fgv/ts-json-base';
|
|
3
|
+
import { Converter } from '@fgv/ts-utils';
|
|
4
|
+
import { JsonValue } from '@fgv/ts-json-base';
|
|
3
5
|
import { ResourceManagerBuilder } from '../resources';
|
|
4
6
|
import { ImportContext } from './importContext';
|
|
5
7
|
import { IImportable } from './importable';
|
|
@@ -27,6 +29,14 @@ export interface IImporterCreateParams {
|
|
|
27
29
|
* An optional list of {@link Import.Importers.IImporter | importers} to use for the import.
|
|
28
30
|
*/
|
|
29
31
|
importers?: IImporter[];
|
|
32
|
+
/**
|
|
33
|
+
* An optional converter used to pre-process file contents before JSON import validation.
|
|
34
|
+
*/
|
|
35
|
+
fileContentConverter?: Converter<JsonValue>;
|
|
36
|
+
/**
|
|
37
|
+
* Optional file extensions which should be parsed using the supplied file content converter.
|
|
38
|
+
*/
|
|
39
|
+
fileContentExtensions?: ReadonlyArray<string>;
|
|
30
40
|
}
|
|
31
41
|
/**
|
|
32
42
|
* Class to manage the import of resources from various sources.
|
|
@@ -80,9 +90,13 @@ export declare class ImportManager {
|
|
|
80
90
|
* and optional `FileTree`.
|
|
81
91
|
* @param qualifiers - The {@link Qualifiers.IReadOnlyQualifierCollector | qualifiers} to use for the import.
|
|
82
92
|
* @param tree - An optional `FileTree` for importing path items.
|
|
93
|
+
* @param fileContentConverter - An optional converter used to pre-process raw file contents before JSON import
|
|
94
|
+
* validation.
|
|
95
|
+
* @param fileContentExtensions - Optional file extensions which should be parsed using the supplied file
|
|
96
|
+
* content converter.
|
|
83
97
|
* @returns A read-only array of {@link Import.Importers.IImporter | importers}.
|
|
84
98
|
*/
|
|
85
|
-
static getDefaultImporters(qualifiers: IReadOnlyQualifierCollector, tree?: FileTree.FileTree): ReadonlyArray<IImporter>;
|
|
99
|
+
static getDefaultImporters(qualifiers: IReadOnlyQualifierCollector, tree?: FileTree.FileTree, fileContentConverter?: Converter<JsonValue>, fileContentExtensions?: ReadonlyArray<string>): ReadonlyArray<IImporter>;
|
|
86
100
|
/**
|
|
87
101
|
* Imports any items on the import stack.
|
|
88
102
|
* @returns `Success` with the {@link Import.ImportManager | ImportManager} if successful,
|
|
@@ -48,7 +48,7 @@ class ImportManager {
|
|
|
48
48
|
this._importers = [];
|
|
49
49
|
this.resources = params.resources;
|
|
50
50
|
this.initialContext = (_a = params.initialContext) !== null && _a !== void 0 ? _a : importContext_1.ImportContext.create().orThrow();
|
|
51
|
-
this._importers = Array.from((_b = params.importers) !== null && _b !== void 0 ? _b : ImportManager.getDefaultImporters(this.resources.qualifiers, params.fileTree));
|
|
51
|
+
this._importers = Array.from((_b = params.importers) !== null && _b !== void 0 ? _b : ImportManager.getDefaultImporters(this.resources.qualifiers, params.fileTree, params.fileContentConverter, params.fileContentExtensions));
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Factory method to create a new {@link Import.ImportManager | ImportManager}.
|
|
@@ -84,12 +84,16 @@ class ImportManager {
|
|
|
84
84
|
* and optional `FileTree`.
|
|
85
85
|
* @param qualifiers - The {@link Qualifiers.IReadOnlyQualifierCollector | qualifiers} to use for the import.
|
|
86
86
|
* @param tree - An optional `FileTree` for importing path items.
|
|
87
|
+
* @param fileContentConverter - An optional converter used to pre-process raw file contents before JSON import
|
|
88
|
+
* validation.
|
|
89
|
+
* @param fileContentExtensions - Optional file extensions which should be parsed using the supplied file
|
|
90
|
+
* content converter.
|
|
87
91
|
* @returns A read-only array of {@link Import.Importers.IImporter | importers}.
|
|
88
92
|
*/
|
|
89
|
-
static getDefaultImporters(qualifiers, tree) {
|
|
93
|
+
static getDefaultImporters(qualifiers, tree, fileContentConverter, fileContentExtensions) {
|
|
90
94
|
return [
|
|
91
95
|
importers_1.PathImporter.create({ qualifiers, tree }).orThrow(),
|
|
92
|
-
fsItemImporter_1.FsItemImporter.create({ qualifiers }).orThrow(),
|
|
96
|
+
fsItemImporter_1.FsItemImporter.create({ qualifiers, fileContentConverter, fileContentExtensions }).orThrow(),
|
|
93
97
|
importers_1.JsonImporter.create().orThrow(),
|
|
94
98
|
importers_1.CollectionImporter.create().orThrow()
|
|
95
99
|
];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { DetailedResult, Result } from '@fgv/ts-utils';
|
|
1
|
+
import { DetailedResult, Result, Converter } from '@fgv/ts-utils';
|
|
2
|
+
import { JsonValue } from '@fgv/ts-json-base';
|
|
2
3
|
import { ResourceManagerBuilder } from '../../resources';
|
|
3
4
|
import { IImportable } from '../importable';
|
|
4
5
|
import { IImporter, ImporterResultDetail } from './importer';
|
|
@@ -10,6 +11,8 @@ import { FsItem, FsItemResultDetail } from '../fsItem';
|
|
|
10
11
|
*/
|
|
11
12
|
export interface IFsItemImporterCreateParams {
|
|
12
13
|
qualifiers: IReadOnlyQualifierCollector;
|
|
14
|
+
fileContentConverter?: Converter<JsonValue>;
|
|
15
|
+
fileContentExtensions?: ReadonlyArray<string>;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* {@link Import.Importers.IImporter | Importer} implementation which imports resources from a `FileTree`.
|
|
@@ -20,6 +23,14 @@ export declare class FsItemImporter implements IImporter {
|
|
|
20
23
|
* The {@link Qualifiers.IReadOnlyQualifierCollector | qualifier collector} to use for this importer.
|
|
21
24
|
*/
|
|
22
25
|
readonly qualifiers: IReadOnlyQualifierCollector;
|
|
26
|
+
/**
|
|
27
|
+
* Optional converter used to parse raw file contents before they are exposed as JSON importables.
|
|
28
|
+
*/
|
|
29
|
+
readonly fileContentConverter?: Converter<JsonValue>;
|
|
30
|
+
/**
|
|
31
|
+
* Optional list of file extensions which should be parsed using the file content converter.
|
|
32
|
+
*/
|
|
33
|
+
readonly fileContentExtensions?: ReadonlyArray<string>;
|
|
23
34
|
/**
|
|
24
35
|
* The types of {@link Import.IImportable | importables} that this importer can handle.
|
|
25
36
|
*/
|
|
@@ -39,6 +50,9 @@ export declare class FsItemImporter implements IImporter {
|
|
|
39
50
|
* {@inheritdoc Import.Importers.IImporter.import}
|
|
40
51
|
*/
|
|
41
52
|
import(item: IImportable, __manager: ResourceManagerBuilder): DetailedResult<IImportable[], ImporterResultDetail>;
|
|
53
|
+
private _isSupportedFileExtension;
|
|
54
|
+
private _getJsonContents;
|
|
55
|
+
private _canConvertFileExtension;
|
|
42
56
|
/**
|
|
43
57
|
* Gets an {@link Import.FsItem | FsItem} from an {@link Import.IImportable | importable}.
|
|
44
58
|
* @param item - The importable to convert.
|
|
@@ -40,6 +40,8 @@ class FsItemImporter {
|
|
|
40
40
|
*/
|
|
41
41
|
this.types = ['fsItem'];
|
|
42
42
|
this.qualifiers = params.qualifiers;
|
|
43
|
+
this.fileContentConverter = params.fileContentConverter;
|
|
44
|
+
this.fileContentExtensions = params.fileContentExtensions;
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
45
47
|
* Creates a new {@link Import.Importers.FsItemImporter | FsItemImporter}.
|
|
@@ -84,23 +86,37 @@ class FsItemImporter {
|
|
|
84
86
|
.withDetail('failed', 'processed');
|
|
85
87
|
}
|
|
86
88
|
else if (fsItem.item.type === 'file') {
|
|
87
|
-
if (fsItem.item.extension
|
|
88
|
-
return
|
|
89
|
-
.getContents(ts_json_base_1.Converters.jsonValue)
|
|
90
|
-
.onSuccess((json) => {
|
|
91
|
-
const jsonItem = {
|
|
92
|
-
type: 'json',
|
|
93
|
-
json,
|
|
94
|
-
context
|
|
95
|
-
};
|
|
96
|
-
return (0, ts_utils_1.succeed)([jsonItem]);
|
|
97
|
-
})
|
|
98
|
-
.withDetail('failed', 'processed');
|
|
89
|
+
if (!this._isSupportedFileExtension(fsItem.item.extension)) {
|
|
90
|
+
return (0, ts_utils_1.succeedWithDetail)([], 'skipped');
|
|
99
91
|
}
|
|
92
|
+
return this._getJsonContents(fsItem.item)
|
|
93
|
+
.onSuccess((json) => {
|
|
94
|
+
const jsonItem = {
|
|
95
|
+
type: 'json',
|
|
96
|
+
json,
|
|
97
|
+
context
|
|
98
|
+
};
|
|
99
|
+
return (0, ts_utils_1.succeed)([jsonItem]);
|
|
100
|
+
})
|
|
101
|
+
.withDetail('failed', 'processed');
|
|
100
102
|
}
|
|
101
103
|
/* c8 ignore next 2 - defensive coding: fallback case for unsupported file types */
|
|
102
104
|
return (0, ts_utils_1.succeedWithDetail)([], 'skipped');
|
|
103
105
|
}
|
|
106
|
+
_isSupportedFileExtension(extension) {
|
|
107
|
+
return extension === '.json' || this._canConvertFileExtension(extension);
|
|
108
|
+
}
|
|
109
|
+
_getJsonContents(file) {
|
|
110
|
+
const converter = this.fileContentConverter;
|
|
111
|
+
if (converter !== undefined) {
|
|
112
|
+
return file.getRawContents().onSuccess((contents) => converter.convert(contents));
|
|
113
|
+
}
|
|
114
|
+
return file.getContents(ts_json_base_1.Converters.jsonValue);
|
|
115
|
+
}
|
|
116
|
+
_canConvertFileExtension(extension) {
|
|
117
|
+
var _a;
|
|
118
|
+
return (this.fileContentConverter !== undefined && ((_a = this.fileContentExtensions) === null || _a === void 0 ? void 0 : _a.includes(extension)) === true);
|
|
119
|
+
}
|
|
104
120
|
/**
|
|
105
121
|
* Gets an {@link Import.FsItem | FsItem} from an {@link Import.IImportable | importable}.
|
|
106
122
|
* @param item - The importable to convert.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fgv/ts-res",
|
|
3
|
-
"version": "5.1.0-
|
|
3
|
+
"version": "5.1.0-10",
|
|
4
4
|
"description": "Multi-dimensional Resource Runtime",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "dist/ts-res.d.ts",
|
|
@@ -39,22 +39,24 @@
|
|
|
39
39
|
"typescript": "5.9.3",
|
|
40
40
|
"eslint-plugin-n": "^17.23.1",
|
|
41
41
|
"@rushstack/eslint-config": "4.6.4",
|
|
42
|
-
"@rushstack/heft": "1.2.
|
|
42
|
+
"@rushstack/heft": "1.2.7",
|
|
43
43
|
"@rushstack/heft-jest-plugin": "1.2.6",
|
|
44
|
-
"@rushstack/heft-node-rig": "2.11.
|
|
44
|
+
"@rushstack/heft-node-rig": "2.11.27",
|
|
45
45
|
"@types/heft-jest": "1.0.6",
|
|
46
46
|
"eslint-plugin-tsdoc": "~0.5.2",
|
|
47
|
-
"
|
|
48
|
-
"@fgv/
|
|
49
|
-
"@fgv/
|
|
47
|
+
"typedoc": "~0.28.16",
|
|
48
|
+
"@fgv/heft-dual-rig": "5.1.0-10",
|
|
49
|
+
"@fgv/typedoc-compact-theme": "5.1.0-10",
|
|
50
|
+
"@fgv/ts-utils-jest": "5.1.0-10",
|
|
51
|
+
"@fgv/ts-extras": "5.1.0-10"
|
|
50
52
|
},
|
|
51
53
|
"dependencies": {
|
|
52
54
|
"luxon": "^3.7.2",
|
|
53
55
|
"fflate": "~0.8.2",
|
|
54
|
-
"@fgv/ts-utils": "5.1.0-
|
|
55
|
-
"@fgv/ts-
|
|
56
|
-
"@fgv/ts-
|
|
57
|
-
"@fgv/ts-json": "5.1.0-
|
|
56
|
+
"@fgv/ts-utils": "5.1.0-10",
|
|
57
|
+
"@fgv/ts-bcp47": "5.1.0-10",
|
|
58
|
+
"@fgv/ts-json-base": "5.1.0-10",
|
|
59
|
+
"@fgv/ts-json": "5.1.0-10"
|
|
58
60
|
},
|
|
59
61
|
"exports": {
|
|
60
62
|
".": {
|