@pbiplint/core 0.1.0 → 0.1.1
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/tmdl/parse.d.ts.map +1 -1
- package/dist/tmdl/parse.js +18 -10
- package/dist/tmdl/parse.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/tmdl/parse.ts +16 -10
- package/src/version.ts +1 -1
package/dist/tmdl/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/tmdl/parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AAuCnE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/tmdl/parse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AAuCnE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CA2JhE"}
|
package/dist/tmdl/parse.js
CHANGED
|
@@ -49,6 +49,16 @@ export function parseTmdl(file, text) {
|
|
|
49
49
|
// The first `///` line of the pending run, for the issue reported when it leads nowhere.
|
|
50
50
|
let descriptionLine = 0;
|
|
51
51
|
let descriptionText = "";
|
|
52
|
+
/** A pending description that nothing will claim: report it and drop it. */
|
|
53
|
+
const orphanDescription = () => {
|
|
54
|
+
issues.push({
|
|
55
|
+
file,
|
|
56
|
+
line: descriptionLine,
|
|
57
|
+
text: descriptionText,
|
|
58
|
+
reason: "description is not followed by a declaration",
|
|
59
|
+
});
|
|
60
|
+
pendingDescription = [];
|
|
61
|
+
};
|
|
52
62
|
let i = 0;
|
|
53
63
|
while (i < lines.length) {
|
|
54
64
|
const raw = lines[i];
|
|
@@ -56,15 +66,8 @@ export function parseTmdl(file, text) {
|
|
|
56
66
|
if (raw.trim() === "") {
|
|
57
67
|
// Tabular Editor's TMDL reader rejects a blank line after a `///` description, so a
|
|
58
68
|
// description separated from its declaration never reaches it. Report and drop it.
|
|
59
|
-
if (pendingDescription.length)
|
|
60
|
-
|
|
61
|
-
file,
|
|
62
|
-
line: descriptionLine,
|
|
63
|
-
text: descriptionText,
|
|
64
|
-
reason: "description is not followed by a declaration",
|
|
65
|
-
});
|
|
66
|
-
pendingDescription = [];
|
|
67
|
-
}
|
|
69
|
+
if (pendingDescription.length)
|
|
70
|
+
orphanDescription();
|
|
68
71
|
i++;
|
|
69
72
|
continue;
|
|
70
73
|
}
|
|
@@ -126,7 +129,8 @@ export function parseTmdl(file, text) {
|
|
|
126
129
|
j++;
|
|
127
130
|
}
|
|
128
131
|
if (j >= lines.length)
|
|
129
|
-
|
|
132
|
+
// "code fence", the words rules/parse-issue.md uses, so the finding and the page agree.
|
|
133
|
+
issues.push({ file, line: lineNo, text: raw, reason: "unterminated code fence" });
|
|
130
134
|
const boundary = j < lines.length ? leadingWs(lines[j]) : 0;
|
|
131
135
|
i = j;
|
|
132
136
|
return out.map((l) => l.slice(Math.min(boundary, leadingWs(l)))).join("\n");
|
|
@@ -191,6 +195,10 @@ export function parseTmdl(file, text) {
|
|
|
191
195
|
stack[indent] = node;
|
|
192
196
|
i++;
|
|
193
197
|
}
|
|
198
|
+
// A description on the last line has no blank line after it to reach the check above. Desktop
|
|
199
|
+
// always writes a trailing newline, which does, but a hand-edited file need not.
|
|
200
|
+
if (pendingDescription.length)
|
|
201
|
+
orphanDescription();
|
|
194
202
|
return { file, roots, issues, lineCount: lines.length };
|
|
195
203
|
}
|
|
196
204
|
//# sourceMappingURL=parse.js.map
|
package/dist/tmdl/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/tmdl/parse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/tmdl/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pbiplint/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Best-practice linter core for Power BI semantic models (TMDL). Runs in the browser and in Node, makes no network calls.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"power-bi",
|
|
@@ -46,6 +46,6 @@
|
|
|
46
46
|
"prepack": "npm run build"
|
|
47
47
|
},
|
|
48
48
|
"engines": {
|
|
49
|
-
"node": ">=
|
|
49
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
50
50
|
}
|
|
51
51
|
}
|
package/src/tmdl/parse.ts
CHANGED
|
@@ -53,6 +53,16 @@ export function parseTmdl(file: string, text: string): ParsedFile {
|
|
|
53
53
|
// The first `///` line of the pending run, for the issue reported when it leads nowhere.
|
|
54
54
|
let descriptionLine = 0;
|
|
55
55
|
let descriptionText = "";
|
|
56
|
+
/** A pending description that nothing will claim: report it and drop it. */
|
|
57
|
+
const orphanDescription = (): void => {
|
|
58
|
+
issues.push({
|
|
59
|
+
file,
|
|
60
|
+
line: descriptionLine,
|
|
61
|
+
text: descriptionText,
|
|
62
|
+
reason: "description is not followed by a declaration",
|
|
63
|
+
});
|
|
64
|
+
pendingDescription = [];
|
|
65
|
+
};
|
|
56
66
|
let i = 0;
|
|
57
67
|
|
|
58
68
|
while (i < lines.length) {
|
|
@@ -61,15 +71,7 @@ export function parseTmdl(file: string, text: string): ParsedFile {
|
|
|
61
71
|
if (raw.trim() === "") {
|
|
62
72
|
// Tabular Editor's TMDL reader rejects a blank line after a `///` description, so a
|
|
63
73
|
// description separated from its declaration never reaches it. Report and drop it.
|
|
64
|
-
if (pendingDescription.length)
|
|
65
|
-
issues.push({
|
|
66
|
-
file,
|
|
67
|
-
line: descriptionLine,
|
|
68
|
-
text: descriptionText,
|
|
69
|
-
reason: "description is not followed by a declaration",
|
|
70
|
-
});
|
|
71
|
-
pendingDescription = [];
|
|
72
|
-
}
|
|
74
|
+
if (pendingDescription.length) orphanDescription();
|
|
73
75
|
i++;
|
|
74
76
|
continue;
|
|
75
77
|
}
|
|
@@ -129,7 +131,8 @@ export function parseTmdl(file: string, text: string): ParsedFile {
|
|
|
129
131
|
j++;
|
|
130
132
|
}
|
|
131
133
|
if (j >= lines.length)
|
|
132
|
-
|
|
134
|
+
// "code fence", the words rules/parse-issue.md uses, so the finding and the page agree.
|
|
135
|
+
issues.push({ file, line: lineNo, text: raw, reason: "unterminated code fence" });
|
|
133
136
|
const boundary = j < lines.length ? leadingWs(lines[j]!) : 0;
|
|
134
137
|
i = j;
|
|
135
138
|
return out.map((l) => l.slice(Math.min(boundary, leadingWs(l)))).join("\n");
|
|
@@ -190,5 +193,8 @@ export function parseTmdl(file: string, text: string): ParsedFile {
|
|
|
190
193
|
stack[indent] = node;
|
|
191
194
|
i++;
|
|
192
195
|
}
|
|
196
|
+
// A description on the last line has no blank line after it to reach the check above. Desktop
|
|
197
|
+
// always writes a trailing newline, which does, but a hand-edited file need not.
|
|
198
|
+
if (pendingDescription.length) orphanDescription();
|
|
193
199
|
return { file, roots, issues, lineCount: lines.length };
|
|
194
200
|
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by scripts/sync-version.mjs from packages/core/package.json. Do not edit by hand.
|
|
2
|
-
export const VERSION = "0.1.
|
|
2
|
+
export const VERSION = "0.1.1";
|