@jupyterlab/json-extension 4.0.6 → 4.1.0-alpha.2
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/README.md +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +32 -2
- package/lib/index.js.map +1 -1
- package/package.json +7 -7
- package/src/index.tsx +34 -2
package/README.md
CHANGED
|
@@ -40,4 +40,4 @@ To render a `.json` file, simply open it:
|
|
|
40
40
|
|
|
41
41
|
## Development
|
|
42
42
|
|
|
43
|
-
See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/
|
|
43
|
+
See the [JupyterLab Contributor Documentation](https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md).
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -17,6 +17,12 @@ const CSS_CLASS = 'jp-RenderedJSON';
|
|
|
17
17
|
* The MIME type for JSON.
|
|
18
18
|
*/
|
|
19
19
|
export const MIME_TYPE = 'application/json';
|
|
20
|
+
// NOTE: not standardized yet
|
|
21
|
+
export const MIME_TYPES_JSONL = [
|
|
22
|
+
'text/jsonl',
|
|
23
|
+
'application/jsonl',
|
|
24
|
+
'application/json-lines'
|
|
25
|
+
];
|
|
20
26
|
/**
|
|
21
27
|
* A renderer for JSON data.
|
|
22
28
|
*/
|
|
@@ -40,7 +46,18 @@ export class RenderedJSON extends Widget {
|
|
|
40
46
|
*/
|
|
41
47
|
async renderModel(model) {
|
|
42
48
|
const { Component } = await import('./component');
|
|
43
|
-
|
|
49
|
+
let data;
|
|
50
|
+
// handle if json-lines format
|
|
51
|
+
if (MIME_TYPES_JSONL.indexOf(this._mimeType) >= 0) {
|
|
52
|
+
// convert into proper json
|
|
53
|
+
const lines = (model.data[this._mimeType] || '')
|
|
54
|
+
.trim()
|
|
55
|
+
.split(/\n/);
|
|
56
|
+
data = JSON.parse(`[${lines.join(',')}]`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
data = (model.data[this._mimeType] || {});
|
|
60
|
+
}
|
|
44
61
|
const metadata = (model.metadata[this._mimeType] || {});
|
|
45
62
|
if (this._rootDOM === null) {
|
|
46
63
|
this._rootDOM = createRoot(this.node);
|
|
@@ -65,7 +82,7 @@ export class RenderedJSON extends Widget {
|
|
|
65
82
|
*/
|
|
66
83
|
export const rendererFactory = {
|
|
67
84
|
safe: true,
|
|
68
|
-
mimeTypes: [MIME_TYPE],
|
|
85
|
+
mimeTypes: [MIME_TYPE, ...MIME_TYPES_JSONL],
|
|
69
86
|
createRenderer: options => new RenderedJSON(options)
|
|
70
87
|
};
|
|
71
88
|
const extensions = [
|
|
@@ -82,6 +99,19 @@ const extensions = [
|
|
|
82
99
|
fileTypes: ['json', 'notebook', 'geojson'],
|
|
83
100
|
defaultFor: ['json']
|
|
84
101
|
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: '@jupyterlab/json-lines-extension:factory',
|
|
105
|
+
description: 'Adds renderer for JSONLines content.',
|
|
106
|
+
rendererFactory,
|
|
107
|
+
rank: 0,
|
|
108
|
+
dataType: 'string',
|
|
109
|
+
documentWidgetFactoryOptions: {
|
|
110
|
+
name: 'JSONLines',
|
|
111
|
+
primaryFileType: 'jsonl',
|
|
112
|
+
fileTypes: ['jsonl', 'ndjson'],
|
|
113
|
+
defaultFor: ['jsonl', 'ndjson']
|
|
114
|
+
}
|
|
85
115
|
}
|
|
86
116
|
];
|
|
87
117
|
export default extensions;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAC3D;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/json-extension",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.1.0-alpha.2",
|
|
4
4
|
"description": "JupyterLab - JSON Renderer",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"watch": "tsc -b --watch"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@jupyterlab/apputils": "^4.
|
|
37
|
-
"@jupyterlab/codemirror": "^4.0.
|
|
38
|
-
"@jupyterlab/rendermime-interfaces": "^3.8.
|
|
39
|
-
"@jupyterlab/translation": "^4.0.
|
|
40
|
-
"@jupyterlab/ui-components": "^4.0.
|
|
36
|
+
"@jupyterlab/apputils": "^4.2.0-alpha.2",
|
|
37
|
+
"@jupyterlab/codemirror": "^4.1.0-alpha.2",
|
|
38
|
+
"@jupyterlab/rendermime-interfaces": "^3.8.3-alpha.1",
|
|
39
|
+
"@jupyterlab/translation": "^4.1.0-alpha.2",
|
|
40
|
+
"@jupyterlab/ui-components": "^4.1.0-alpha.2",
|
|
41
41
|
"@lezer/highlight": "^1.1.4",
|
|
42
42
|
"@lumino/coreutils": "^2.1.2",
|
|
43
43
|
"@lumino/messaging": "^2.0.1",
|
|
44
|
-
"@lumino/widgets": "^2.3.0",
|
|
44
|
+
"@lumino/widgets": "^2.3.1-alpha.0",
|
|
45
45
|
"react": "^18.2.0",
|
|
46
46
|
"react-dom": "^18.2.0",
|
|
47
47
|
"react-highlight-words": "^0.20.0",
|
package/src/index.tsx
CHANGED
|
@@ -23,6 +23,12 @@ const CSS_CLASS = 'jp-RenderedJSON';
|
|
|
23
23
|
* The MIME type for JSON.
|
|
24
24
|
*/
|
|
25
25
|
export const MIME_TYPE = 'application/json';
|
|
26
|
+
// NOTE: not standardized yet
|
|
27
|
+
export const MIME_TYPES_JSONL = [
|
|
28
|
+
'text/jsonl',
|
|
29
|
+
'application/jsonl',
|
|
30
|
+
'application/json-lines'
|
|
31
|
+
];
|
|
26
32
|
|
|
27
33
|
/**
|
|
28
34
|
* A renderer for JSON data.
|
|
@@ -51,7 +57,20 @@ export class RenderedJSON
|
|
|
51
57
|
*/
|
|
52
58
|
async renderModel(model: IRenderMime.IMimeModel): Promise<void> {
|
|
53
59
|
const { Component } = await import('./component');
|
|
54
|
-
|
|
60
|
+
|
|
61
|
+
let data: NonNullable<JSONValue>;
|
|
62
|
+
|
|
63
|
+
// handle if json-lines format
|
|
64
|
+
if (MIME_TYPES_JSONL.indexOf(this._mimeType) >= 0) {
|
|
65
|
+
// convert into proper json
|
|
66
|
+
const lines = ((model.data[this._mimeType] || '') as string)
|
|
67
|
+
.trim()
|
|
68
|
+
.split(/\n/);
|
|
69
|
+
data = JSON.parse(`[${lines.join(',')}]`);
|
|
70
|
+
} else {
|
|
71
|
+
data = (model.data[this._mimeType] || {}) as NonNullable<JSONValue>;
|
|
72
|
+
}
|
|
73
|
+
|
|
55
74
|
const metadata = (model.metadata[this._mimeType] || {}) as JSONObject;
|
|
56
75
|
if (this._rootDOM === null) {
|
|
57
76
|
this._rootDOM = createRoot(this.node);
|
|
@@ -89,7 +108,7 @@ export class RenderedJSON
|
|
|
89
108
|
*/
|
|
90
109
|
export const rendererFactory: IRenderMime.IRendererFactory = {
|
|
91
110
|
safe: true,
|
|
92
|
-
mimeTypes: [MIME_TYPE],
|
|
111
|
+
mimeTypes: [MIME_TYPE, ...MIME_TYPES_JSONL],
|
|
93
112
|
createRenderer: options => new RenderedJSON(options)
|
|
94
113
|
};
|
|
95
114
|
|
|
@@ -107,6 +126,19 @@ const extensions: IRenderMime.IExtension | IRenderMime.IExtension[] = [
|
|
|
107
126
|
fileTypes: ['json', 'notebook', 'geojson'],
|
|
108
127
|
defaultFor: ['json']
|
|
109
128
|
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: '@jupyterlab/json-lines-extension:factory',
|
|
132
|
+
description: 'Adds renderer for JSONLines content.',
|
|
133
|
+
rendererFactory,
|
|
134
|
+
rank: 0,
|
|
135
|
+
dataType: 'string',
|
|
136
|
+
documentWidgetFactoryOptions: {
|
|
137
|
+
name: 'JSONLines',
|
|
138
|
+
primaryFileType: 'jsonl',
|
|
139
|
+
fileTypes: ['jsonl', 'ndjson'],
|
|
140
|
+
defaultFor: ['jsonl', 'ndjson']
|
|
141
|
+
}
|
|
110
142
|
}
|
|
111
143
|
];
|
|
112
144
|
|