@stackbit/cms-core 0.0.3
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/annotator/html.d.ts +1 -0
- package/dist/annotator/html.js +54 -0
- package/dist/annotator/html.js.map +1 -0
- package/dist/annotator/index.d.ts +13 -0
- package/dist/annotator/index.js +120 -0
- package/dist/annotator/index.js.map +1 -0
- package/dist/annotator/react.d.ts +1 -0
- package/dist/annotator/react.js +53 -0
- package/dist/annotator/react.js.map +1 -0
- package/dist/consts.d.ts +27 -0
- package/dist/consts.js +43 -0
- package/dist/consts.js.map +1 -0
- package/dist/encoder.d.ts +8 -0
- package/dist/encoder.js +272 -0
- package/dist/encoder.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/stackbit/index.d.ts +4 -0
- package/dist/stackbit/index.js +54 -0
- package/dist/stackbit/index.js.map +1 -0
- package/dist/utils/index.d.ts +172 -0
- package/dist/utils/index.js +928 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +43 -0
- package/src/annotator/html.js +55 -0
- package/src/annotator/index.js +135 -0
- package/src/annotator/react.js +56 -0
- package/src/consts.js +41 -0
- package/src/encoder.js +315 -0
- package/src/index.js +13 -0
- package/src/stackbit/index.js +55 -0
- package/src/utils/index.js +997 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function createAnnotations(filePath: any, data: any, logger: any): Promise<any[] | null>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
const parser = require('parse5');
|
|
4
|
+
async function createAnnotations(filePath, data, logger) {
|
|
5
|
+
if (!data) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
let document;
|
|
9
|
+
try {
|
|
10
|
+
// See https://astexplorer.net for example parser output
|
|
11
|
+
document = parser.parse(data, {
|
|
12
|
+
sourceCodeLocationInfo: true
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
logger.warn('[annotator] error parsing html file', { filePath, err });
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const annotations = [];
|
|
20
|
+
const traverse = (node) => {
|
|
21
|
+
if (!node || _.isEmpty(node.childNodes)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (node.sourceCodeLocation && node.tagName) {
|
|
25
|
+
annotations.push({
|
|
26
|
+
sourceLocation: {
|
|
27
|
+
/// node.sourceCodeLocation contains the location for the entire node
|
|
28
|
+
start: {
|
|
29
|
+
line: node.sourceCodeLocation.startLine,
|
|
30
|
+
column: node.sourceCodeLocation.startCol - 1
|
|
31
|
+
},
|
|
32
|
+
end: {
|
|
33
|
+
line: node.sourceCodeLocation.endLine,
|
|
34
|
+
column: node.sourceCodeLocation.endCol
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
// Example: <p>text</p>
|
|
38
|
+
// node.sourceCodeLocation.startTag.endOffset == ↑
|
|
39
|
+
// The global charactar offset of the ending of the opening tag
|
|
40
|
+
insertOffset: node.sourceCodeLocation.startTag.endOffset - 1
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
node.childNodes.forEach((childNode) => traverse(childNode));
|
|
44
|
+
};
|
|
45
|
+
traverse(document);
|
|
46
|
+
if (_.isEmpty(annotations)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return annotations;
|
|
50
|
+
}
|
|
51
|
+
module.exports = {
|
|
52
|
+
createAnnotations
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/annotator/html.js"],"names":[],"mappings":";AAEA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,KAAK,UAAU,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM;IACnD,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,IAAI,CAAC;KACf;IACD,IAAI,QAAQ,CAAC;IACb,IAAI;QACA,wDAAwD;QACxD,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YAC1B,sBAAsB,EAAE,IAAI;SAC/B,CAAC,CAAC;KACN;IAAC,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;KACf;IACD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACV;QACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE;YACzC,WAAW,CAAC,IAAI,CAAC;gBACb,cAAc,EAAE;oBACZ,qEAAqE;oBACrE,KAAK,EAAE;wBACH,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS;wBACvC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC;qBAC/C;oBACD,GAAG,EAAE;wBACD,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO;wBACrC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;qBACzC;iBACJ;gBACD,0DAA0D;gBAC1D,kDAAkD;gBAClD,+DAA+D;gBAC/D,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;aAC/D,CAAC,CAAC;SACN;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACb,iBAAiB;CACpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function annotateDir(inputDir: any, outputDir: any, logger?: Console, options?: {}): Promise<any>;
|
|
2
|
+
export function annotateFiles(filePaths: any, inputDir: any, outputDir: any, logger?: Console, options?: {}): Promise<any>;
|
|
3
|
+
export function decodeSourcemap(attributes: any): {
|
|
4
|
+
file: any;
|
|
5
|
+
start: {
|
|
6
|
+
line: number;
|
|
7
|
+
column: number;
|
|
8
|
+
} | undefined;
|
|
9
|
+
end: {
|
|
10
|
+
line: number;
|
|
11
|
+
column: number;
|
|
12
|
+
} | undefined;
|
|
13
|
+
} | undefined;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
const fse = require('fs-extra');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { mapPromise, replaceInRange, readDirRec } = require('../utils');
|
|
6
|
+
const { LOADER_EXCLUDED_FILES, LOADER_EXCLUDED_DIRS } = require('../consts');
|
|
7
|
+
const reactAnnotator = require('./react');
|
|
8
|
+
const htmlAnnotator = require('./html');
|
|
9
|
+
module.exports = {
|
|
10
|
+
annotateDir,
|
|
11
|
+
annotateFiles,
|
|
12
|
+
decodeSourcemap
|
|
13
|
+
};
|
|
14
|
+
const FILE_TYPES = ['js', 'jsx', 'ts', 'tsx', 'html', 'htm'];
|
|
15
|
+
const MAX_FILE_SIZE = 500 * 1024; // 500kb
|
|
16
|
+
async function encodeSourcemap(filePath, data, annotations) {
|
|
17
|
+
let annotatedData = data;
|
|
18
|
+
const sortedAnnotations = _.orderBy(annotations, ['insertOffset'], ['desc']);
|
|
19
|
+
sortedAnnotations.forEach((annotation) => {
|
|
20
|
+
const loc = annotation.sourceLocation;
|
|
21
|
+
const attribute = ` data-sb-source-file="${filePath}" data-sb-source-position="${loc.start.line},${loc.start.column}:${loc.end.line},${loc.end.column}"`;
|
|
22
|
+
annotatedData = replaceInRange(annotatedData, [annotation.insertOffset, annotation.insertOffset], attribute);
|
|
23
|
+
});
|
|
24
|
+
return annotatedData;
|
|
25
|
+
}
|
|
26
|
+
async function annotateFile(filePath, inputDir, outputDir, annotator, logger, options = {}) {
|
|
27
|
+
const data = (await fse.readFile(path.join(inputDir, filePath))).toString();
|
|
28
|
+
if (!data || data.length > MAX_FILE_SIZE) {
|
|
29
|
+
logger.debug(`[annotator] skipping file: ${filePath}`, { dataLength: _.get(data, 'length') });
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// annotator.createAnnotations returns annotations with the following structure:
|
|
33
|
+
// {
|
|
34
|
+
// insertOffset: number - global character offset in the data where we can insert the annotation data
|
|
35
|
+
// sourceLocation: { start: Position, end: Position } - span of the entire source block in line+column format
|
|
36
|
+
// }
|
|
37
|
+
const annotations = await annotator.createAnnotations(filePath, data, logger);
|
|
38
|
+
if (_.isEmpty(annotations)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const annotatedData = await encodeSourcemap(_.get(options, 'pathPrefix') ? path.join(options.pathPrefix, filePath) : filePath, data, annotations);
|
|
42
|
+
if (_.isEqual(data, annotatedData)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const outputFilePath = path.join(outputDir, filePath);
|
|
46
|
+
const existingData = (await fse.pathExists(outputFilePath)) ? (await fse.readFile(outputFilePath)).toString() : null;
|
|
47
|
+
if (_.isEqual(annotatedData, existingData) || (existingData && existingData.includes('data-sb-source-position'))) {
|
|
48
|
+
logger.debug(`[annotator] annotating, but skipping write: ${filePath}`, { annotations: annotations.length });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
logger.debug(`[annotator] annotating: ${filePath}`, { annotations: annotations.length });
|
|
52
|
+
await fse.writeFile(outputFilePath, annotatedData);
|
|
53
|
+
return outputFilePath;
|
|
54
|
+
}
|
|
55
|
+
function decodePosition(positionString) {
|
|
56
|
+
const parts = positionString.split(',');
|
|
57
|
+
return {
|
|
58
|
+
line: parseInt(parts[0]),
|
|
59
|
+
column: parseInt(parts[1])
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function decodeSourcemap(attributes) {
|
|
63
|
+
const sourceFile = _.get(attributes, 'data-sb-source-file');
|
|
64
|
+
const sourcePosition = _.get(attributes, 'data-sb-source-position');
|
|
65
|
+
let sourcemap;
|
|
66
|
+
if (sourceFile) {
|
|
67
|
+
let start, end;
|
|
68
|
+
if (sourcePosition) {
|
|
69
|
+
const parts = sourcePosition.split(':');
|
|
70
|
+
start = decodePosition(parts[0]);
|
|
71
|
+
end = decodePosition(parts[1]);
|
|
72
|
+
}
|
|
73
|
+
sourcemap = {
|
|
74
|
+
file: sourceFile,
|
|
75
|
+
start,
|
|
76
|
+
end
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return sourcemap;
|
|
80
|
+
}
|
|
81
|
+
async function annotateFiles(filePaths, inputDir, outputDir, logger = console, options = {}) {
|
|
82
|
+
const result = await mapPromise(filePaths, async (filePath) => {
|
|
83
|
+
const ext = path.extname(filePath).substring(1);
|
|
84
|
+
let annotator = null;
|
|
85
|
+
if (['js', 'jsx', 'ts', 'tsx'].includes(ext)) {
|
|
86
|
+
annotator = reactAnnotator;
|
|
87
|
+
}
|
|
88
|
+
else if (['html', 'htm'].includes(ext)) {
|
|
89
|
+
annotator = htmlAnnotator;
|
|
90
|
+
}
|
|
91
|
+
if (annotator) {
|
|
92
|
+
return annotateFile(filePath, inputDir, outputDir, annotator, logger, options);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return _.compact(result);
|
|
96
|
+
}
|
|
97
|
+
async function annotateDir(inputDir, outputDir, logger = console, options = {}) {
|
|
98
|
+
logger.debug('[annotator] annotating dir', { inputDir });
|
|
99
|
+
const filePaths = await readDirRec(inputDir, {
|
|
100
|
+
filter: (filePath, stats) => {
|
|
101
|
+
const p = path.parse(filePath);
|
|
102
|
+
const fileName = p.name;
|
|
103
|
+
const dirName = p.dir;
|
|
104
|
+
const ext = path.extname(filePath).substring(1);
|
|
105
|
+
return (!filePath.startsWith('.') &&
|
|
106
|
+
!filePath.includes('node_modules') &&
|
|
107
|
+
(!stats.isFile() ||
|
|
108
|
+
(FILE_TYPES.includes(ext) &&
|
|
109
|
+
!['config', '_config'].includes(fileName) &&
|
|
110
|
+
!_.some(LOADER_EXCLUDED_FILES, (f) => filePath.endsWith(f)) &&
|
|
111
|
+
!_.some(LOADER_EXCLUDED_DIRS, (f) => dirName.endsWith(f)) &&
|
|
112
|
+
!fileName.includes('webpack'))));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return annotateFiles(filePaths, inputDir, outputDir, logger, options);
|
|
116
|
+
}
|
|
117
|
+
if (require.main === module) {
|
|
118
|
+
annotateDir([process.argv[2]], process.argv[3]);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/annotator/index.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function createAnnotations(filePath: any, data: any, logger: any): Promise<any[] | null>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
const parser = require('@babel/parser');
|
|
4
|
+
const traverse = require('@babel/traverse');
|
|
5
|
+
const utils = require('../utils');
|
|
6
|
+
async function createAnnotations(filePath, data, logger) {
|
|
7
|
+
if (!utils.isRelevantReactData(data)) {
|
|
8
|
+
// not suitable for react parsing, stop quickly
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
let ast;
|
|
12
|
+
try {
|
|
13
|
+
// See https://astexplorer.net for example parser output
|
|
14
|
+
ast = parser.parse(data, {
|
|
15
|
+
sourceType: 'module',
|
|
16
|
+
plugins: ['jsx', 'typescript', 'classProperties'],
|
|
17
|
+
ranges: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
logger.warn('[annotator] error parsing react file', { filePath, err });
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
let foundReact = false;
|
|
25
|
+
const annotations = [];
|
|
26
|
+
traverse.default(ast, {
|
|
27
|
+
ImportDeclaration(path) {
|
|
28
|
+
if (!foundReact) {
|
|
29
|
+
foundReact = _.get(path, 'node.source.value', '').trim().toLowerCase() === 'react';
|
|
30
|
+
}
|
|
31
|
+
path.skip();
|
|
32
|
+
},
|
|
33
|
+
JSXElement(path) {
|
|
34
|
+
const children = path.node.children;
|
|
35
|
+
const elementName = _.get(path, 'node.openingElement.name.name');
|
|
36
|
+
if (!children || !path.node.loc || !elementName) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
annotations.push({
|
|
40
|
+
sourceLocation: path.node.loc,
|
|
41
|
+
insertOffset: _.get(path, 'node.openingElement.name.end')
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
if (!foundReact || _.isEmpty(annotations)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return annotations;
|
|
49
|
+
}
|
|
50
|
+
module.exports = {
|
|
51
|
+
createAnnotations
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/annotator/react.js"],"names":[],"mappings":";AAEA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElC,KAAK,UAAU,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM;IACnD,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAClC,+CAA+C;QAC/C,OAAO,IAAI,CAAC;KACf;IACD,IAAI,GAAG,CAAC;IACR,IAAI;QACA,wDAAwD;QACxD,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YACrB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,iBAAiB,CAAC;YACjD,MAAM,EAAE,IAAI;SACf,CAAC,CAAC;KACN;IAAC,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;KACf;IACD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;QAClB,iBAAiB,CAAC,IAAI;YAClB,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;aACtF;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,IAAI;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACf;YACD,WAAW,CAAC,IAAI,CAAC;gBACb,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC7B,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,8BAA8B,CAAC;aAC5D,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACvC,OAAO,IAAI,CAAC;KACf;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACb,iBAAiB;CACpB,CAAC"}
|
package/dist/consts.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const SIMPLE_VALUE_FIELDS: string[];
|
|
2
|
+
export const RICH_TEXT_HINT_MAX_LENGTH: number;
|
|
3
|
+
export namespace RICH_TEXT_NODE_TYPES {
|
|
4
|
+
const DOCUMENT: string;
|
|
5
|
+
const PARAGRAPH: string;
|
|
6
|
+
const HEADING_1: string;
|
|
7
|
+
const HEADING_2: string;
|
|
8
|
+
const HEADING_3: string;
|
|
9
|
+
const HEADING_4: string;
|
|
10
|
+
const HEADING_5: string;
|
|
11
|
+
const HEADING_6: string;
|
|
12
|
+
const OL: string;
|
|
13
|
+
const UL: string;
|
|
14
|
+
const LIST_ITEM: string;
|
|
15
|
+
const HR: string;
|
|
16
|
+
const BLOCKQUOTE: string;
|
|
17
|
+
const LINK: string;
|
|
18
|
+
const REFERENCE: string;
|
|
19
|
+
}
|
|
20
|
+
export namespace RICH_TEXT_MARK_TYPES {
|
|
21
|
+
const BOLD: string;
|
|
22
|
+
const ITALIC: string;
|
|
23
|
+
const UNDERLINE: string;
|
|
24
|
+
const CODE: string;
|
|
25
|
+
}
|
|
26
|
+
export const LOADER_EXCLUDED_FILES: string[];
|
|
27
|
+
export const LOADER_EXCLUDED_DIRS: string[];
|
package/dist/consts.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = {
|
|
3
|
+
SIMPLE_VALUE_FIELDS: ['string', 'text', 'markdown', 'number', 'url', 'slug', 'boolean', 'date', 'datetime', 'color'],
|
|
4
|
+
RICH_TEXT_HINT_MAX_LENGTH: 200,
|
|
5
|
+
RICH_TEXT_NODE_TYPES: {
|
|
6
|
+
DOCUMENT: 'document',
|
|
7
|
+
PARAGRAPH: 'p',
|
|
8
|
+
HEADING_1: 'h1',
|
|
9
|
+
HEADING_2: 'h2',
|
|
10
|
+
HEADING_3: 'h3',
|
|
11
|
+
HEADING_4: 'h4',
|
|
12
|
+
HEADING_5: 'h5',
|
|
13
|
+
HEADING_6: 'h6',
|
|
14
|
+
OL: 'ol',
|
|
15
|
+
UL: 'ul',
|
|
16
|
+
LIST_ITEM: 'li',
|
|
17
|
+
HR: 'hr',
|
|
18
|
+
BLOCKQUOTE: 'blockquote',
|
|
19
|
+
LINK: 'a',
|
|
20
|
+
REFERENCE: 'reference'
|
|
21
|
+
},
|
|
22
|
+
RICH_TEXT_MARK_TYPES: {
|
|
23
|
+
BOLD: 'bold',
|
|
24
|
+
ITALIC: 'italic',
|
|
25
|
+
UNDERLINE: 'underline',
|
|
26
|
+
CODE: 'code'
|
|
27
|
+
},
|
|
28
|
+
LOADER_EXCLUDED_FILES: [
|
|
29
|
+
'LICENSE.md',
|
|
30
|
+
'README.md',
|
|
31
|
+
'README.theme.md',
|
|
32
|
+
'CONTRIBUTING.md',
|
|
33
|
+
'CHANGELOG.md',
|
|
34
|
+
'stackbit.yaml',
|
|
35
|
+
'netlify.toml',
|
|
36
|
+
'theme.toml',
|
|
37
|
+
'package.json',
|
|
38
|
+
'package-lock.json',
|
|
39
|
+
'yarn-lock.json'
|
|
40
|
+
],
|
|
41
|
+
LOADER_EXCLUDED_DIRS: ['src/pages']
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACb,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IACpH,yBAAyB,EAAE,GAAG;IAC9B,oBAAoB,EAAE;QAClB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,IAAI;QACf,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,WAAW;KACzB;IACD,oBAAoB,EAAE;QAClB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,MAAM;KACf;IACD,qBAAqB,EAAE;QACnB,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,cAAc;QACd,YAAY;QACZ,cAAc;QACd,mBAAmB;QACnB,gBAAgB;KACnB;IACD,oBAAoB,EAAE,CAAC,WAAW,CAAC;CACtC,CAAC"}
|
package/dist/encoder.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
const consts = require('./consts');
|
|
4
|
+
const { mergeAtPath, omitByNil } = require('./utils');
|
|
5
|
+
function mapObjectFields({ data, model, fieldDataPath, fieldDataPathsInverted, fieldModelPath, encodeValue, delegate }) {
|
|
6
|
+
if (!fieldModelPath) {
|
|
7
|
+
fieldModelPath = [model.name];
|
|
8
|
+
}
|
|
9
|
+
const isRoot = fieldDataPath.length === 1;
|
|
10
|
+
const metadata = delegate.getItemMetadata(data, model, isRoot);
|
|
11
|
+
const fields = delegate.getItemFields(data, model);
|
|
12
|
+
return _.reduce(fields, (accum, field) => {
|
|
13
|
+
const fieldModel = _.find(model.fields, { name: field.name });
|
|
14
|
+
// if field model wasn't found ignore this field
|
|
15
|
+
if (!fieldModel) {
|
|
16
|
+
return accum;
|
|
17
|
+
}
|
|
18
|
+
// don't include const fields
|
|
19
|
+
if (_.has(fieldModel, 'const')) {
|
|
20
|
+
return accum;
|
|
21
|
+
}
|
|
22
|
+
let childFieldModelPath;
|
|
23
|
+
if (_.get(model, 'isList') && field.name === 'items') {
|
|
24
|
+
childFieldModelPath = fieldModelPath;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
childFieldModelPath = _.concat(fieldModelPath, field.name);
|
|
28
|
+
}
|
|
29
|
+
const fieldPath = ['fields', field.name];
|
|
30
|
+
const mapLocalizedField = (accum, localizedField) => {
|
|
31
|
+
const localePath = fieldModel.localized ? ['locales', localizedField.locale] : [];
|
|
32
|
+
const fullFieldDataPath = _.concat(fieldPath, localePath);
|
|
33
|
+
const mappedData = mapField({
|
|
34
|
+
fieldValue: localizedField.value,
|
|
35
|
+
fieldModel: fieldModel,
|
|
36
|
+
fieldDataPath: _.concat(fieldDataPath, fullFieldDataPath),
|
|
37
|
+
fieldDataPaths: accum.fieldDataPaths,
|
|
38
|
+
fieldDataPathsInverted: fieldDataPathsInverted,
|
|
39
|
+
fieldModelPath: childFieldModelPath,
|
|
40
|
+
delegate: delegate
|
|
41
|
+
});
|
|
42
|
+
if (localizedField.locale && localizedField.locale !== '_unset') {
|
|
43
|
+
mappedData.fieldData.locale = localizedField.locale;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
fieldData: mergeAtPath(accum.fieldData, fullFieldDataPath, omitByNil(mappedData.fieldData))
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
// always create 'fields' as object, even for objects that have field names as numbers
|
|
50
|
+
_.setWith(accum.fieldData, fieldPath, fieldModelToFieldData(fieldModel), Object);
|
|
51
|
+
if (fieldModel.localized) {
|
|
52
|
+
accum = mapLocalizedField(accum, { locale: '_unset' });
|
|
53
|
+
}
|
|
54
|
+
if (_.has(field, 'locales')) {
|
|
55
|
+
return _.reduce(field.locales, (accum, localizedField) => {
|
|
56
|
+
return mapLocalizedField(accum, localizedField);
|
|
57
|
+
}, accum);
|
|
58
|
+
}
|
|
59
|
+
return mapLocalizedField(accum, field);
|
|
60
|
+
}, {
|
|
61
|
+
fieldData: metadata
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function mapField({ fieldValue, fieldModel, fieldDataPath, fieldModelPath, delegate }) {
|
|
65
|
+
if (_.includes(consts.SIMPLE_VALUE_FIELDS, fieldModel.type)) {
|
|
66
|
+
return {
|
|
67
|
+
fieldData: { value: fieldValue }
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
else if (['enum', 'style'].includes(fieldModel.type)) {
|
|
71
|
+
return {
|
|
72
|
+
fieldData: { value: fieldValue }
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
else if (fieldModel.type === 'list') {
|
|
76
|
+
const itemsModel = _.get(fieldModel, 'items');
|
|
77
|
+
let getListItemModel;
|
|
78
|
+
if (_.isArray(itemsModel)) {
|
|
79
|
+
// in Sanity, list items may have multiple types, in this case, 'items' will be an array
|
|
80
|
+
getListItemModel = (listItem, fieldModel) => delegate.getItemTypeForListItem(listItem, fieldModel);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// get the type of list items, if type is not defined, set string as it is the default
|
|
84
|
+
const listItemsType = _.get(itemsModel, 'type', 'string');
|
|
85
|
+
getListItemModel = _.constant(_.defaults({}, itemsModel, { type: listItemsType }));
|
|
86
|
+
}
|
|
87
|
+
return _.reduce(fieldValue, (accum, listItem, listIdx) => {
|
|
88
|
+
const itemModel = getListItemModel(listItem, fieldModel);
|
|
89
|
+
let mappedData;
|
|
90
|
+
if (!itemModel) {
|
|
91
|
+
mappedData = unresolvedModel();
|
|
92
|
+
accum.fieldData.items = _.concat(accum.fieldData.items, mappedData.fieldData);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
mappedData = mapField({
|
|
96
|
+
fieldValue: listItem,
|
|
97
|
+
fieldModel: itemModel,
|
|
98
|
+
fieldDataPath: _.concat(fieldDataPath, ['items', listIdx]),
|
|
99
|
+
fieldModelPath: fieldModelPath,
|
|
100
|
+
delegate
|
|
101
|
+
});
|
|
102
|
+
accum.fieldData.items = _.concat(accum.fieldData.items, fieldModelToFieldData(itemModel, mappedData.fieldData));
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
fieldData: accum.fieldData
|
|
106
|
+
};
|
|
107
|
+
}, {
|
|
108
|
+
fieldData: { items: [] }
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else if (fieldModel.type === 'object') {
|
|
112
|
+
// inline object
|
|
113
|
+
if (!fieldValue) {
|
|
114
|
+
return unsetObject();
|
|
115
|
+
}
|
|
116
|
+
return mapObjectFields({
|
|
117
|
+
data: fieldValue,
|
|
118
|
+
model: fieldModel,
|
|
119
|
+
fieldDataPath,
|
|
120
|
+
fieldModelPath,
|
|
121
|
+
delegate
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else if (fieldModel.type === 'reference') {
|
|
125
|
+
if (!fieldValue) {
|
|
126
|
+
return unsetObject();
|
|
127
|
+
}
|
|
128
|
+
const isLink = delegate.isLinkItem(fieldValue);
|
|
129
|
+
if (isLink) {
|
|
130
|
+
return unresolvedReference(fieldValue, delegate);
|
|
131
|
+
}
|
|
132
|
+
const model = delegate.getModelForItemOfReferenceType(fieldValue);
|
|
133
|
+
if (!model) {
|
|
134
|
+
return unresolvedModel();
|
|
135
|
+
}
|
|
136
|
+
return mapObjectFields({
|
|
137
|
+
data: fieldValue,
|
|
138
|
+
model,
|
|
139
|
+
fieldDataPath,
|
|
140
|
+
delegate
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else if (fieldModel.type === 'model') {
|
|
144
|
+
if (!fieldValue) {
|
|
145
|
+
return unsetObject();
|
|
146
|
+
}
|
|
147
|
+
const fieldModels = _.get(fieldModel, 'models', []);
|
|
148
|
+
const modelsByName = delegate.getModelsByName();
|
|
149
|
+
const model = fieldModels.length === 1 ? _.get(modelsByName, fieldModels[0]) : delegate.getModelForItemOfModelsType(fieldValue);
|
|
150
|
+
if (!model) {
|
|
151
|
+
return unresolvedModel();
|
|
152
|
+
}
|
|
153
|
+
return mapObjectFields({
|
|
154
|
+
data: fieldValue,
|
|
155
|
+
model,
|
|
156
|
+
fieldDataPath,
|
|
157
|
+
delegate
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// for everything else, delegate encoding to the delegate
|
|
162
|
+
const fieldData = {};
|
|
163
|
+
const encodedField = delegate.encodeField(fieldValue, fieldModel, fieldDataPath);
|
|
164
|
+
if (encodedField) {
|
|
165
|
+
if (_.has(encodedField, 'fieldData')) {
|
|
166
|
+
_.assign(fieldData, encodedField.fieldData);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
fieldData: omitByNil(fieldData)
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
function fieldModelToFieldData(fieldModel, overrides) {
|
|
175
|
+
const type = ['reference', 'model'].includes(fieldModel.type) ? 'object' : fieldModel.type;
|
|
176
|
+
return omitByNil(_.assign({
|
|
177
|
+
type: type,
|
|
178
|
+
label: fieldModel.label,
|
|
179
|
+
description: fieldModel.description,
|
|
180
|
+
// fieldType: fieldModel.type,
|
|
181
|
+
// fieldLabel: fieldModel.label,
|
|
182
|
+
// "localized" field will be excluded from final fieldData by decoder
|
|
183
|
+
localized: fieldModel.localized,
|
|
184
|
+
// "models" field will be excluded from final fieldData by decoder
|
|
185
|
+
models: getFieldModelNames(fieldModel)
|
|
186
|
+
}, fieldModel.type === 'markdown'
|
|
187
|
+
? {
|
|
188
|
+
multiElement: true
|
|
189
|
+
}
|
|
190
|
+
: null, fieldModel.type === 'enum'
|
|
191
|
+
? {
|
|
192
|
+
options: _.get(fieldModel, 'options', []),
|
|
193
|
+
source: _.get(fieldModel, 'source')
|
|
194
|
+
}
|
|
195
|
+
: null, overrides));
|
|
196
|
+
}
|
|
197
|
+
function getFieldModelNames(fieldModel) {
|
|
198
|
+
const fieldType = fieldModel.type;
|
|
199
|
+
if (fieldType === 'reference' || fieldType === 'model') {
|
|
200
|
+
return _.clone(_.get(fieldModel, 'models', []));
|
|
201
|
+
}
|
|
202
|
+
else if (fieldModel.type === 'list') {
|
|
203
|
+
const itemsModel = _.get(fieldModel, 'items');
|
|
204
|
+
// in Sanity, array can have items of multiple types
|
|
205
|
+
if (_.isArray(itemsModel)) {
|
|
206
|
+
return Array.from(_.reduce(itemsModel, (accum, itemModel) => {
|
|
207
|
+
return new Set([...accum, ...(getFieldModelNames(itemModel) || [])]);
|
|
208
|
+
}, new Set()));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return getFieldModelNames(itemsModel);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
function unsetObject() {
|
|
217
|
+
return {
|
|
218
|
+
fieldData: {
|
|
219
|
+
isUnset: true
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function unresolvedReference(fieldValue, delegate) {
|
|
224
|
+
return {
|
|
225
|
+
fieldData: {
|
|
226
|
+
type: 'unresolved_reference',
|
|
227
|
+
refId: delegate.getReferenceId(fieldValue),
|
|
228
|
+
refType: 'object'
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function unresolvedModel() {
|
|
233
|
+
return {
|
|
234
|
+
fieldData: {
|
|
235
|
+
type: 'unresolved_model'
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function mapData(data, prevEncodingResult, delegate) {
|
|
240
|
+
// scan model instances and replace their 'data' with an identity-mapped data
|
|
241
|
+
return _.reduce(data, (accum, item) => {
|
|
242
|
+
const model = delegate.getModelForRootItem(item);
|
|
243
|
+
if (!model) {
|
|
244
|
+
return {
|
|
245
|
+
fieldData: accum.fieldData
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
const itemId = delegate.getItemId(item);
|
|
249
|
+
// todo: pass the accumulated hashedData to all children, because we need to remove duplicate fieldPaths from it per strategy when a field has changed (because we might get partial field data)
|
|
250
|
+
// todo: create inverse map to find duplications
|
|
251
|
+
const mappedData = mapObjectFields({
|
|
252
|
+
data: item,
|
|
253
|
+
model: model,
|
|
254
|
+
fieldDataPath: [itemId],
|
|
255
|
+
delegate: delegate
|
|
256
|
+
});
|
|
257
|
+
return {
|
|
258
|
+
fieldData: _.assign(accum.fieldData, { [itemId]: mappedData.fieldData })
|
|
259
|
+
};
|
|
260
|
+
}, {
|
|
261
|
+
fieldData: _.get(prevEncodingResult, 'fieldData', {})
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
function encodeData({ data, prevEncodingResult, delegate }) {
|
|
265
|
+
data = _.cloneDeep(data);
|
|
266
|
+
const mappedData = mapData(data, prevEncodingResult, delegate);
|
|
267
|
+
return {
|
|
268
|
+
fieldData: mappedData.fieldData
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
module.exports = encodeData;
|
|
272
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.js"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED