@rr0/cms 0.3.52 → 0.3.54
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/CMSGenerator.test.js +28 -28
- package/dist/OpenGraphCommand.test.js +3 -3
- package/dist/RR0Context.test.js +5 -5
- package/dist/anchor/AnchorReplaceCommandTest.js +6 -6
- package/dist/anchor/AnchorReplacerTest.js +6 -6
- package/dist/book/BookService.test.js +4 -4
- package/dist/lang/LanguageReplaceCommand.test.js +9 -9
- package/dist/lang/RR0Messages_fr.d.ts +1 -0
- package/dist/org/country/CountryMessages.test.js +2 -2
- package/dist/org/country/CountryService.test.js +2 -2
- package/dist/org/country/region/RegionMessages.test.js +2 -2
- package/dist/org/country/region/RegionService.test.js +2 -2
- package/dist/org/country/region/department/DeparmentMessages.test.js +2 -2
- package/dist/org/country/region/department/DepartmentService.test.js +2 -2
- package/dist/org/country/region/department/city/CityMessages.test.js +2 -2
- package/dist/org/country/region/department/city/CityService.test.js +3 -3
- package/dist/org/eu/fr/cnes/geipan/geipan/GeipanDatasource.test.js +3 -3
- package/dist/people/PeopleMessages_en.js +1 -0
- package/dist/people/PeopleMessages_fr.d.ts +1 -0
- package/dist/people/PeopleMessages_fr.js +1 -0
- package/dist/people/PeopleRegexReplaceCommand.test.js +3 -3
- package/dist/people/PeopleReplacer.test.js +4 -4
- package/dist/people/author/AuthorReplaceCommandTest.js +15 -15
- package/dist/place/PlaceReplacer.test.js +4 -4
- package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.test.js +8 -8
- package/dist/source/SourceRenderer.js +1 -1
- package/dist/tech/info/soft/proj/impl/lang/CodeReplacerTest.js +4 -4
- package/dist/test/{RR0TestUtil.d.ts → CMSTestUtil.d.ts} +2 -2
- package/dist/test/{RR0TestUtil.js → CMSTestUtil.js} +2 -2
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.js +1 -1
- package/dist/time/TimeDirectoryStep.test.js +7 -7
- package/dist/time/TimeEventRenderer.test.js +5 -5
- package/dist/time/TimeService.test.js +3 -3
- package/dist/time/TimeTagReplaceCommand.test.js +7 -7
- package/dist/time/TimeTestUtil.d.ts +2 -2
- package/dist/time/TimeTestUtil.js +7 -7
- package/dist/time/TimeUrlBuilder.test.js +3 -3
- package/dist/time/TitleReplaceCommand.test.js +10 -10
- package/dist/time/datasource/ChronologyReplacer.test.js +5 -5
- package/dist/time/datasource/CsvMapper.test.js +3 -3
- package/dist/time/datasource/DatasourceTestCase.js +3 -3
- package/dist/time/datasource/JsonMapper.test.js +3 -3
- package/dist/time/datasource/TimeContextFilter.test.js +2 -2
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCaseSummaryRR0Mapper.test.js +3 -3
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCsv.test.js +3 -3
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceDatasource.test.js +3 -3
- package/dist/time/datasource/fufora/FuforaDatasource.test.js +3 -3
- package/dist/time/datasource/nuforc/NuforcDatasource.test.js +3 -3
- package/dist/time/datasource/nuforc/NuforcRR0Mapper.test.js +3 -3
- package/dist/time/datasource/rr0/RR0Datasource.test.js +4 -4
- package/dist/time/datasource/rr0/RR0FileDatasource.test.js +2 -2
- package/dist/time/datasource/sceau/SceauDatasource.test.js +4 -4
- package/dist/time/datasource/ufo-search/UfoSearchDatasource.test.js +3 -3
- package/dist/time/datasource/urecat/UrecatDatasource.test.js +3 -3
- package/dist/time/datasource/urecat/UrecatTestCases.js +2 -2
- package/dist/time/html/TimeReplacer.test.js +21 -21
- package/dist/time/text/RelativeTimeTextBuilder.test.js +10 -10
- package/dist/time/text/TimeTextBuilder.test.js +3 -3
- package/package.json +5 -5
|
@@ -13,15 +13,15 @@ import { DescriptionReplaceCommand } from "./DescriptionReplaceCommand.js";
|
|
|
13
13
|
import { CodeReplacerFactory } from "./tech/index.js";
|
|
14
14
|
import { PlaceReplacerFactory } from "./place/index.js";
|
|
15
15
|
import { IndexedReplacerFactory, UnitReplaceCommand } from "./index.js";
|
|
16
|
-
import {
|
|
16
|
+
import { cmsTestUtil } from "./test/index.js";
|
|
17
17
|
export async function getTimeFiles() {
|
|
18
|
-
const minusYearFiles = await glob(
|
|
19
|
-
const year1Files = await glob(
|
|
20
|
-
const year2Files = await glob(
|
|
21
|
-
const year3Files = await glob(
|
|
22
|
-
const year4Files = await glob(
|
|
23
|
-
const monthFiles = await glob(
|
|
24
|
-
const dayFiles = await glob(
|
|
18
|
+
const minusYearFiles = await glob(cmsTestUtil.filePath("time/-?/?/?/?/index.html"));
|
|
19
|
+
const year1Files = await glob(cmsTestUtil.filePath("time/?/index.html"));
|
|
20
|
+
const year2Files = await glob(cmsTestUtil.filePath("time/?/?/index.html"));
|
|
21
|
+
const year3Files = await glob(cmsTestUtil.filePath("time/?/?/?/index.html"));
|
|
22
|
+
const year4Files = await glob(cmsTestUtil.filePath("time/?/?/?/?/index.html"));
|
|
23
|
+
const monthFiles = await glob(cmsTestUtil.filePath("time/?/?/?/?/??/index.html"));
|
|
24
|
+
const dayFiles = await glob(cmsTestUtil.filePath("time/?/?/?/?/??/??/index.html"));
|
|
25
25
|
return year1Files.concat(year2Files).concat(year3Files).concat(year4Files).concat(minusYearFiles).concat(monthFiles).concat(dayFiles).sort();
|
|
26
26
|
}
|
|
27
27
|
describe("Build", () => {
|
|
@@ -49,7 +49,7 @@ describe("Build", () => {
|
|
|
49
49
|
"tech/**/*.html",
|
|
50
50
|
"udb/*.html",
|
|
51
51
|
"js/**/*.html"
|
|
52
|
-
].map(
|
|
52
|
+
].map(cmsTestUtil.filePath);
|
|
53
53
|
const copiesArg = args.copies;
|
|
54
54
|
const copies = copiesArg ? copiesArg : [
|
|
55
55
|
"favicon.ico", "manifest.json", "opensearch.xml", "apple-touch-icon.png", "apple-touch-icon_400x400.png", "screenshot1.jpg",
|
|
@@ -65,7 +65,7 @@ describe("Build", () => {
|
|
|
65
65
|
"time/DualRangeComponent.mjs",
|
|
66
66
|
"index/index.js", "lang/form.js", "lang/form.css", "lang/speech.js", "lang/speech.css",
|
|
67
67
|
"croyance/divin/theisme/mono/livre/islam/coran/index.js"
|
|
68
|
-
].map(path =>
|
|
68
|
+
].map(path => cmsTestUtil.filePath(path));
|
|
69
69
|
const outDir = "out";
|
|
70
70
|
const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY;
|
|
71
71
|
if (!googleMapsApiKey) {
|
|
@@ -83,27 +83,27 @@ describe("Build", () => {
|
|
|
83
83
|
"people/index.html", "people/witness/index.html", "people/militaires.html", "people/scientifiques.html",
|
|
84
84
|
"people/astronomes.html", "people/politicians.html", "people/dirigeants.html", "people/pilotes.html",
|
|
85
85
|
"people/contactes.html", "people/ufologues.html", "tech/info/Personnes.html", "people/Contributeurs.html"
|
|
86
|
-
].map(path =>
|
|
86
|
+
].map(path => cmsTestUtil.filePath(path));
|
|
87
87
|
getTimeFiles().then(async (timeFiles) => {
|
|
88
88
|
const orgFiles = await glob("test/org/**/index.html");
|
|
89
89
|
const directoryOptions = {
|
|
90
|
-
root:
|
|
91
|
-
scientists:
|
|
92
|
-
ufologists:
|
|
93
|
-
ufoWitnesses:
|
|
94
|
-
astronomers:
|
|
95
|
-
contactees:
|
|
96
|
-
pilots:
|
|
97
|
-
military:
|
|
98
|
-
softwareEngineers:
|
|
99
|
-
politicians:
|
|
100
|
-
rulers:
|
|
90
|
+
root: cmsTestUtil.filePath("people/index.html"),
|
|
91
|
+
scientists: cmsTestUtil.filePath("people/scientifiques.html"),
|
|
92
|
+
ufologists: cmsTestUtil.filePath("people/ufologues.html"),
|
|
93
|
+
ufoWitnesses: cmsTestUtil.filePath("people/witness/index.html"),
|
|
94
|
+
astronomers: cmsTestUtil.filePath("people/astronomes.html"),
|
|
95
|
+
contactees: cmsTestUtil.filePath("people/contactes.html"),
|
|
96
|
+
pilots: cmsTestUtil.filePath("people/pilotes.html"),
|
|
97
|
+
military: cmsTestUtil.filePath("people/militaires.html"),
|
|
98
|
+
softwareEngineers: cmsTestUtil.filePath("tech/info/Personnes.html"),
|
|
99
|
+
politicians: cmsTestUtil.filePath("people/politicians.html"),
|
|
100
|
+
rulers: cmsTestUtil.filePath("people/dirigeants.html")
|
|
101
101
|
};
|
|
102
|
-
const sourceRegistryFileName =
|
|
102
|
+
const sourceRegistryFileName = cmsTestUtil.filePath("source/index.json");
|
|
103
103
|
const siteBaseUrl = "https://rr0.org/";
|
|
104
104
|
const mail = "rr0@rr0.org";
|
|
105
|
-
const timeOptions = { rootDir:
|
|
106
|
-
const orgOptions = { rootDir:
|
|
105
|
+
const timeOptions = { rootDir: cmsTestUtil.filePath("time"), files: timeFiles };
|
|
106
|
+
const orgOptions = { rootDir: cmsTestUtil.filePath("org"), files: orgFiles };
|
|
107
107
|
const dataOptions = {
|
|
108
108
|
time: timeOptions,
|
|
109
109
|
org: orgOptions
|
|
@@ -145,10 +145,10 @@ describe("Build", () => {
|
|
|
145
145
|
const generator = new CMSGenerator({
|
|
146
146
|
contentRoots, copies, outDir, locale: "fr", googleMapsApiKey, mail, dataOptions,
|
|
147
147
|
siteBaseUrl, timeFormat, directoryPages,
|
|
148
|
-
ufoCaseDirectoryFile:
|
|
149
|
-
ufoCasesExclusions: ["science/crypto/ufo/enquete/dossier/canular"].map(path =>
|
|
148
|
+
ufoCaseDirectoryFile: cmsTestUtil.filePath("science/crypto/ufo/enquete/dossier/index.html"),
|
|
149
|
+
ufoCasesExclusions: ["science/crypto/ufo/enquete/dossier/canular"].map(path => cmsTestUtil.filePath(path)),
|
|
150
150
|
sourceRegistryFileName,
|
|
151
|
-
directoryExcluded: ["people/Astronomers_fichiers", "people/witness", "people/author"].map(path =>
|
|
151
|
+
directoryExcluded: ["people/Astronomers_fichiers", "people/witness", "people/author"].map(path => cmsTestUtil.filePath(path)),
|
|
152
152
|
directoryOptions,
|
|
153
153
|
mappings,
|
|
154
154
|
contentReplacers: [...pageReplacers, ...contentsReplacers]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { OpenGraphCommand } from "./OpenGraphCommand.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "./test/index.js";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
describe("OpenGraphCommand", () => {
|
|
5
5
|
const outDir = "/out";
|
|
6
6
|
test("time page", () => {
|
|
7
|
-
const context =
|
|
8
|
-
const command = new OpenGraphCommand(outDir, [context.file.name], "https://rr0.org",
|
|
7
|
+
const context = cmsTestUtil.time.newHtmlContext("0/0/6/5/index.html", "");
|
|
8
|
+
const command = new OpenGraphCommand(outDir, [context.file.name], "https://rr0.org", cmsTestUtil.time.getService(), cmsTestUtil.time.timeTextBuilder);
|
|
9
9
|
expect(command.getInfoStr(context)).toBe("Chronologie, RR0.org");
|
|
10
10
|
});
|
|
11
11
|
});
|
package/dist/RR0Context.test.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { describe, expect, test } from "@javarome/testscript";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "./test/index.js";
|
|
3
3
|
import { ssgMessages } from "./lang/index.js";
|
|
4
4
|
describe("RROContextImpl", () => {
|
|
5
5
|
describe("constructor with locale", () => {
|
|
6
6
|
test("default locale", () => {
|
|
7
|
-
const context =
|
|
7
|
+
const context = cmsTestUtil.newHtmlContext("test.html", "");
|
|
8
8
|
expect(context.locale).toBe("fr");
|
|
9
9
|
});
|
|
10
10
|
test("supported locale", () => {
|
|
11
|
-
const context =
|
|
11
|
+
const context = cmsTestUtil.newHtmlContext("test.html", "", "en");
|
|
12
12
|
expect(context.locale).toBe("en");
|
|
13
13
|
});
|
|
14
14
|
test("locale fallback to lang only", () => {
|
|
15
|
-
const context =
|
|
15
|
+
const context = cmsTestUtil.newHtmlContext("test.html", "", "en-US");
|
|
16
16
|
expect(context.messages).toEqual(ssgMessages["en"]);
|
|
17
17
|
});
|
|
18
18
|
test("locale fallback to default", () => {
|
|
19
|
-
const context =
|
|
19
|
+
const context = cmsTestUtil.newHtmlContext("test.html", "", "xx");
|
|
20
20
|
expect(context.messages).toEqual(ssgMessages["fr"]);
|
|
21
21
|
});
|
|
22
22
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AnchorReplaceCommand } from "./AnchorReplaceCommand.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
import { CaseAnchorHandler } from "./CaseAnchorHandler.js";
|
|
5
5
|
import { CaseService } from "../science/crypto/ufo/enquete/dossier/CaseService.js";
|
|
@@ -7,15 +7,15 @@ import { TimeElementFactory, TimeRenderer, TimeTextBuilder } from "../time/index
|
|
|
7
7
|
import path from "path";
|
|
8
8
|
describe("AnchorReplaceCommand", () => {
|
|
9
9
|
test("replace anchor tag", async () => {
|
|
10
|
-
const dataService =
|
|
11
|
-
const timeTextBuilder = new TimeTextBuilder(
|
|
12
|
-
const timeRenderer = new TimeRenderer(
|
|
10
|
+
const dataService = cmsTestUtil.dataService;
|
|
11
|
+
const timeTextBuilder = new TimeTextBuilder(cmsTestUtil.intlOptions);
|
|
12
|
+
const timeRenderer = new TimeRenderer(cmsTestUtil.time.urlBuilder, timeTextBuilder);
|
|
13
13
|
const timeElementFactory = new TimeElementFactory(timeRenderer);
|
|
14
14
|
const roswellUrl = "/src/science/crypto/ufo/enquete/dossier/Roswell";
|
|
15
15
|
const caseFiles = [path.join(roswellUrl, "index.html")];
|
|
16
|
-
const caseService = new CaseService(dataService,
|
|
16
|
+
const caseService = new CaseService(dataService, cmsTestUtil.caseFactory, timeElementFactory, caseFiles);
|
|
17
17
|
const command = new AnchorReplaceCommand("https://rr0.org/", [new CaseAnchorHandler(caseService, timeTextBuilder)]);
|
|
18
|
-
const context =
|
|
18
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", `<time>2004</time> <a href="${roswellUrl}">Roswell</a>`);
|
|
19
19
|
await command.execute(context);
|
|
20
20
|
expect(context.file.contents).toBe(`<html><head></head><body><time>2004</time> <a href="/src/science/crypto/ufo/enquete/dossier/Roswell/">Roswell</a></body></html>`);
|
|
21
21
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AnchorReplacer } from "./AnchorReplacer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
3
3
|
import { JSDOM } from "jsdom";
|
|
4
4
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
5
5
|
describe("AnchorReplacer", () => {
|
|
@@ -8,7 +8,7 @@ describe("AnchorReplacer", () => {
|
|
|
8
8
|
document = new JSDOM().window.document;
|
|
9
9
|
});
|
|
10
10
|
test("parse relative internal url", async () => {
|
|
11
|
-
const context =
|
|
11
|
+
const context = cmsTestUtil.newHtmlContext("science/crypto/ufo/enquete/dossier", "");
|
|
12
12
|
const replacer = new AnchorReplacer("https://rr0.org/", []);
|
|
13
13
|
const a = document.createElement("a");
|
|
14
14
|
a.href = "Roswell";
|
|
@@ -18,7 +18,7 @@ describe("AnchorReplacer", () => {
|
|
|
18
18
|
expect(replaced.href).toBe("Roswell/");
|
|
19
19
|
});
|
|
20
20
|
test("parse absolute internal file", async () => {
|
|
21
|
-
const context =
|
|
21
|
+
const context = cmsTestUtil.newHtmlContext("science/crypto/ufo/enquete/dossier", "");
|
|
22
22
|
const replacer = new AnchorReplacer("https://rr0.org/", []);
|
|
23
23
|
const a = document.createElement("a");
|
|
24
24
|
a.href = "/Contact.html";
|
|
@@ -28,7 +28,7 @@ describe("AnchorReplacer", () => {
|
|
|
28
28
|
expect(replaced.href).toBe("/Contact.html");
|
|
29
29
|
});
|
|
30
30
|
test("parse absolute internal url", async () => {
|
|
31
|
-
const context =
|
|
31
|
+
const context = cmsTestUtil.newHtmlContext("science/crypto/ufo/enquete/dossier", "");
|
|
32
32
|
const replacer = new AnchorReplacer("https://rr0.org/", []);
|
|
33
33
|
const a = document.createElement("a");
|
|
34
34
|
a.href = "/time/pluies";
|
|
@@ -38,7 +38,7 @@ describe("AnchorReplacer", () => {
|
|
|
38
38
|
expect(replaced.href).toBe("/time/pluies/");
|
|
39
39
|
});
|
|
40
40
|
test("parse absolute external url", async () => {
|
|
41
|
-
const context =
|
|
41
|
+
const context = cmsTestUtil.newHtmlContext("science/crypto/ufo/enquete/dossier", "");
|
|
42
42
|
const replacer = new AnchorReplacer("https://rr0.org/", []);
|
|
43
43
|
const a = document.createElement("a");
|
|
44
44
|
a.href = "https://wikipedia.org";
|
|
@@ -48,7 +48,7 @@ describe("AnchorReplacer", () => {
|
|
|
48
48
|
expect(replaced.href).toBe("https://wikipedia.org/");
|
|
49
49
|
});
|
|
50
50
|
test("parse url with anchor", async () => {
|
|
51
|
-
const context =
|
|
51
|
+
const context = cmsTestUtil.newHtmlContext("science/crypto/ufo/enquete/dossier", "");
|
|
52
52
|
const replacer = new AnchorReplacer("https://rr0.org/", []);
|
|
53
53
|
const a = document.createElement("a");
|
|
54
54
|
a.href = "enquete/dossier/11Septembre/WTC/crashes#passeport";
|
|
@@ -4,13 +4,13 @@ import { CLI } from "../util/cli/CLI.js";
|
|
|
4
4
|
import { AllDataService, PeopleService, RR0EventFactory, TypedDataFactory } from "@rr0/data";
|
|
5
5
|
import { BookService } from "./BookService.js";
|
|
6
6
|
import { TimeUrlBuilder } from "../time/TimeUrlBuilder.js";
|
|
7
|
-
import {
|
|
7
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
8
8
|
const logger = new ConsoleLogger("rr0-books");
|
|
9
9
|
const args = new CLI().getArgs();
|
|
10
10
|
const fileName = args.import;
|
|
11
11
|
if (fileName) {
|
|
12
12
|
const dry = args.dry === "true";
|
|
13
|
-
const peopleFactory =
|
|
13
|
+
const peopleFactory = cmsTestUtil.peopleFactory;
|
|
14
14
|
const eventFactory = new RR0EventFactory();
|
|
15
15
|
const bookFactory = new TypedDataFactory(eventFactory, "book");
|
|
16
16
|
const dataService = new AllDataService([bookFactory, peopleFactory]);
|
|
@@ -20,9 +20,9 @@ if (fileName) {
|
|
|
20
20
|
return path.join(outDir, context.file.name);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
const timeUrlBuilder = new TimeUrlBuilder(
|
|
23
|
+
const timeUrlBuilder = new TimeUrlBuilder(cmsTestUtil.time.timeOptions);
|
|
24
24
|
let files = [];
|
|
25
|
-
const peopleService = new PeopleService(dataService, peopleFactory, { files, rootDir:
|
|
25
|
+
const peopleService = new PeopleService(dataService, peopleFactory, { files, rootDir: cmsTestUtil.filePath("people") });
|
|
26
26
|
const books = new BookService(logger, dry, peopleService, timeUrlBuilder, config);
|
|
27
27
|
books.import(fileName).then((result) => {
|
|
28
28
|
logger.log("Wrote", result.length, "books");
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { LanguageReplaceCommand } from "./LanguageReplaceCommand.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
describe("LanguageReplaceCommand", () => {
|
|
5
5
|
test("add default english translation", async () => {
|
|
6
|
-
const context =
|
|
6
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/6/8/CondonReport/index_fr.html", `<span id="alternate"/>`);
|
|
7
7
|
const command = new LanguageReplaceCommand();
|
|
8
8
|
await command.execute(context);
|
|
9
|
-
expect(context.file.contents).toBe(`<html lang="fr"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${
|
|
9
|
+
expect(context.file.contents).toBe(`<html lang="fr"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${cmsTestUtil.filePath(cmsTestUtil.time.filePath("1/9/6/8/CondonReport/index.html"))}">English version</a></span></body></html>`);
|
|
10
10
|
});
|
|
11
11
|
test("add english translation", async () => {
|
|
12
|
-
const context =
|
|
12
|
+
const context = cmsTestUtil.time.newHtmlContext("0/6/4/0/ChronicaMinor/index_fr.html", `<span id="alternate"/>`);
|
|
13
13
|
const command = new LanguageReplaceCommand();
|
|
14
14
|
await command.execute(context);
|
|
15
|
-
expect(context.file.contents).toBe(`<html lang="fr"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${
|
|
15
|
+
expect(context.file.contents).toBe(`<html lang="fr"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${cmsTestUtil.filePath(cmsTestUtil.time.filePath("0/6/4/0/ChronicaMinor/index_en.html"))}">English version</a></span></body></html>`);
|
|
16
16
|
});
|
|
17
17
|
test("add french translation from default", async () => {
|
|
18
|
-
const context =
|
|
18
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/6/8/CondonReport/index.html", `<span id="alternate"/>`);
|
|
19
19
|
const command = new LanguageReplaceCommand();
|
|
20
20
|
await command.execute(context);
|
|
21
|
-
expect(context.file.contents).toBe(`<html lang="en"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${
|
|
21
|
+
expect(context.file.contents).toBe(`<html lang="en"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${cmsTestUtil.filePath(cmsTestUtil.time.filePath("1/9/6/8/CondonReport/index_fr.html"))}">Version française</a></span></body></html>`);
|
|
22
22
|
});
|
|
23
23
|
test("add french translation", async () => {
|
|
24
|
-
const context =
|
|
24
|
+
const context = cmsTestUtil.time.newHtmlContext("0/6/4/0/ChronicaMinor/index_en.html", `<span id="alternate"/>`);
|
|
25
25
|
const command = new LanguageReplaceCommand();
|
|
26
26
|
await command.execute(context);
|
|
27
|
-
expect(context.file.contents).toBe(`<html lang="en"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${
|
|
27
|
+
expect(context.file.contents).toBe(`<html lang="en"><head><meta name="generator" content="ssg-api"></head><body><span id="alternate"><a href="/${cmsTestUtil.filePath(cmsTestUtil.time.filePath("0/6/4/0/ChronicaMinor/index_fr.html"))}">Version française</a></span></body></html>`);
|
|
28
28
|
});
|
|
29
29
|
});
|
|
@@ -90,6 +90,7 @@ export declare class RR0Messages_fr implements RR0Messages {
|
|
|
90
90
|
hypnotherapist: (_gender: import("@rr0/common").Gender) => string;
|
|
91
91
|
illusionist: (_gender: import("@rr0/common").Gender) => string;
|
|
92
92
|
journalist: (_gender: import("@rr0/common").Gender) => string;
|
|
93
|
+
judge: (_gender: import("@rr0/common").Gender) => string;
|
|
93
94
|
lawyer: (gender: import("@rr0/common").Gender) => "avocat" | "avocate";
|
|
94
95
|
librarian: (_gender: import("@rr0/common").Gender) => string;
|
|
95
96
|
leader: (gender: import("@rr0/common").Gender) => "dirigeant" | "dirigeante";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
2
|
import { france_fr } from "../eu/fr/France_fr.js";
|
|
3
|
-
import {
|
|
3
|
+
import { cmsTestUtil } from "../../test/index.js";
|
|
4
4
|
import { france_en } from "../eu/fr/France_en.js";
|
|
5
5
|
import { usa_fr } from "../us/Usa_fr.js";
|
|
6
6
|
import { usa_en } from "../us/Usa_en.js";
|
|
@@ -9,7 +9,7 @@ import { usa } from "../us/Usa.js";
|
|
|
9
9
|
describe("CountryMessages", () => {
|
|
10
10
|
let context;
|
|
11
11
|
beforeEach(() => {
|
|
12
|
-
context =
|
|
12
|
+
context = cmsTestUtil.newContext(cmsTestUtil.filePath("time/1/9/7/0/03/index.html"));
|
|
13
13
|
});
|
|
14
14
|
test("toTitle", () => {
|
|
15
15
|
expect(france_fr.toTitle(context, france, { parent: false })).toBe(france_fr.title);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { describe, expect, test } from "@javarome/testscript";
|
|
2
2
|
import { france } from "../eu/fr/France.js";
|
|
3
3
|
import { usa } from "../us/Usa.js";
|
|
4
|
-
import {
|
|
4
|
+
import { cmsTestUtil } from "../../test/index.js";
|
|
5
5
|
describe("CountryService", () => {
|
|
6
6
|
test("get", () => {
|
|
7
|
-
const countryService =
|
|
7
|
+
const countryService = cmsTestUtil.countryService;
|
|
8
8
|
expect(countryService.getById(france.id)).toBe(france);
|
|
9
9
|
expect(countryService.getById(usa.id)).toBe(usa);
|
|
10
10
|
expect(countryService.getById(usa.id)).not.toBe(france);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
2
|
import { ileDeFrance } from "../../eu/fr/region/idf/Idf.js";
|
|
3
|
-
import {
|
|
3
|
+
import { cmsTestUtil } from "../../../test/index.js";
|
|
4
4
|
import { france_fr } from "../../eu/fr/France_fr.js";
|
|
5
5
|
import { idfMessages } from "../../eu/fr/region/idf/IdfMessages.js";
|
|
6
6
|
describe("RegionMessages", () => {
|
|
7
7
|
let context;
|
|
8
8
|
beforeEach(() => {
|
|
9
|
-
context =
|
|
9
|
+
context = cmsTestUtil.newContext(cmsTestUtil.filePath("time/1/9/7/0/03/index.html"));
|
|
10
10
|
});
|
|
11
11
|
test("toTitle", { skip: true }, () => {
|
|
12
12
|
expect(idfMessages.toTitle(context, ileDeFrance)).toBe(idfMessages.title);
|
|
@@ -3,10 +3,10 @@ import { ileDeFrance } from "../../eu/fr/region/idf/Idf.js";
|
|
|
3
3
|
import { france } from "../../eu/fr/France.js";
|
|
4
4
|
import { alabama } from "../../us/region/al/Alabama.js";
|
|
5
5
|
import { usa } from "../../us/Usa.js";
|
|
6
|
-
import {
|
|
6
|
+
import { cmsTestUtil } from "../../../test/index.js";
|
|
7
7
|
describe("RegionService", () => {
|
|
8
8
|
test("get", () => {
|
|
9
|
-
const regionService =
|
|
9
|
+
const regionService = cmsTestUtil.regionService;
|
|
10
10
|
expect(regionService.getById(ileDeFrance.id, france)).toBe(ileDeFrance);
|
|
11
11
|
expect(regionService.getById(alabama.id, usa)).toBe(alabama);
|
|
12
12
|
expect(regionService.getById(alabama.id, france)).toBeUndefined();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../../../../test/index.js";
|
|
3
3
|
import { idfMessages } from "../../../eu/fr/region/idf/IdfMessages.js";
|
|
4
4
|
import { france_fr } from "../../../eu/fr/France_fr.js";
|
|
5
5
|
import { hautsDeSeineMessages } from "../../../eu/fr/region/idf/92/HautsDeSeineMessages.js";
|
|
@@ -7,7 +7,7 @@ import { hautsDeSeine } from "../../../eu/fr/region/idf/92/HautsDeSeine.js";
|
|
|
7
7
|
describe("DepartmentMessages", () => {
|
|
8
8
|
let context;
|
|
9
9
|
beforeEach(() => {
|
|
10
|
-
context =
|
|
10
|
+
context = cmsTestUtil.newContext(cmsTestUtil.filePath("time/1/9/7/0/03/index.html"));
|
|
11
11
|
});
|
|
12
12
|
test("toTitle", () => {
|
|
13
13
|
expect(hautsDeSeineMessages.toTitle(context, hautsDeSeine, { parent: false })).toBe(hautsDeSeineMessages.title);
|
|
@@ -3,10 +3,10 @@ import { hautsDeSeine } from "../../../eu/fr/region/idf/92/HautsDeSeine.js";
|
|
|
3
3
|
import { ileDeFrance } from "../../../eu/fr/region/idf/Idf.js";
|
|
4
4
|
import { sanDiego } from "../../../us/region/ca/sandiego/SanDiego.js";
|
|
5
5
|
import { california } from "../../../us/region/ca/California.js";
|
|
6
|
-
import {
|
|
6
|
+
import { cmsTestUtil } from "../../../../test/index.js";
|
|
7
7
|
describe("DepartmentService", () => {
|
|
8
8
|
test("get", () => {
|
|
9
|
-
const departmentService =
|
|
9
|
+
const departmentService = cmsTestUtil.departmentService;
|
|
10
10
|
expect(departmentService.getById(hautsDeSeine.id, ileDeFrance)).toBe(hautsDeSeine);
|
|
11
11
|
expect(departmentService.getById(hautsDeSeine.id, undefined)).toBe(hautsDeSeine);
|
|
12
12
|
expect(departmentService.getById(sanDiego.id, california)).toBe(sanDiego);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../../../../../test/index.js";
|
|
3
3
|
import { france_fr } from "../../../../eu/fr/France_fr.js";
|
|
4
4
|
import { nanterreMessages } from "../../../../eu/fr/region/idf/92/Nanterre/NanterreMessages.js";
|
|
5
5
|
import { nanterre92 } from "../../../../eu/fr/region/idf/92/Nanterre/Nanterre.js";
|
|
@@ -13,7 +13,7 @@ import { canada_fr } from "../../../../ca/Canada_fr.js";
|
|
|
13
13
|
describe("CityMessages", () => {
|
|
14
14
|
let context;
|
|
15
15
|
beforeEach(() => {
|
|
16
|
-
context =
|
|
16
|
+
context = cmsTestUtil.newContext(cmsTestUtil.filePath("time/1/9/7/0/03/index.html"));
|
|
17
17
|
});
|
|
18
18
|
test("toTitle", () => {
|
|
19
19
|
expect(castlegarMessages.toTitle(context, castlegar, { parent: false })).toBe(castlegarMessages.title);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../../../../../test/index.js";
|
|
3
3
|
import { hautsDeSeine } from "../../../../eu/fr/region/idf/92/HautsDeSeine.js";
|
|
4
4
|
import { sanDiego } from "../../../../us/region/ca/sandiego/SanDiego.js";
|
|
5
5
|
import { nanterre92 } from "../../../../eu/fr/region/idf/92/Nanterre/Nanterre.js";
|
|
@@ -7,10 +7,10 @@ import { oceanSide } from "../../../../us/region/ca/sandiego/oceanside/OceanSide
|
|
|
7
7
|
describe("Ville", () => {
|
|
8
8
|
let context;
|
|
9
9
|
beforeEach(() => {
|
|
10
|
-
context =
|
|
10
|
+
context = cmsTestUtil.newContext(cmsTestUtil.filePath("time/1/9/7/0/03/index.html"));
|
|
11
11
|
});
|
|
12
12
|
test("find", () => {
|
|
13
|
-
const cityService =
|
|
13
|
+
const cityService = cmsTestUtil.cityService;
|
|
14
14
|
expect(cityService.find(context, "Nanterre", hautsDeSeine)).toBe(nanterre92);
|
|
15
15
|
expect(cityService.find(context, "Nanterre", undefined)).toBe(nanterre92);
|
|
16
16
|
expect(cityService.find(context, "Oceanside", sanDiego)).toBe(oceanSide);
|
|
@@ -2,10 +2,10 @@ import { beforeEach, describe, test } from "@javarome/testscript";
|
|
|
2
2
|
import { geipanTestCaseSummaries } from "./GeipanTestCases.js";
|
|
3
3
|
import { GeipanRR0Mapping } from "./GeipanRR0Mapping.js";
|
|
4
4
|
import { DatasourceTestCase } from "../../../../../../time/datasource/DatasourceTestCase.js";
|
|
5
|
-
import {
|
|
5
|
+
import { cmsTestUtil } from "../../../../../../test/index.js";
|
|
6
6
|
describe("GeipanCaseSource", () => {
|
|
7
7
|
const actions = { read: ["backup", "fetch"], write: ["backup", "pages"] };
|
|
8
|
-
const geipanRR0Mapping = new GeipanRR0Mapping(actions).init(
|
|
8
|
+
const geipanRR0Mapping = new GeipanRR0Mapping(actions).init(cmsTestUtil);
|
|
9
9
|
const testCase = new class extends DatasourceTestCase {
|
|
10
10
|
constructor(mapping, sourceCases) {
|
|
11
11
|
super(mapping, sourceCases);
|
|
@@ -19,7 +19,7 @@ describe("GeipanCaseSource", () => {
|
|
|
19
19
|
}(geipanRR0Mapping, geipanTestCaseSummaries);
|
|
20
20
|
let context;
|
|
21
21
|
beforeEach(() => {
|
|
22
|
-
context =
|
|
22
|
+
context = cmsTestUtil.time.newHtmlContext("1/9/7/0/03/index.html");
|
|
23
23
|
context.time.setYear(1977);
|
|
24
24
|
context.time.setMonth(3);
|
|
25
25
|
});
|
|
@@ -43,6 +43,7 @@ export let peopleMessages_en = {
|
|
|
43
43
|
hypnotherapist: (_gender) => "hypnotherapist",
|
|
44
44
|
illusionist: (_gender) => "illusionist",
|
|
45
45
|
journalist: (_gender) => "journalist",
|
|
46
|
+
judge: (_gender) => "judge",
|
|
46
47
|
librarian: (_gender) => "librarian",
|
|
47
48
|
leader: (_gender) => "leader",
|
|
48
49
|
lawyer: (_gender) => "lawyer",
|
|
@@ -43,6 +43,7 @@ export declare let peopleMessages_fr: {
|
|
|
43
43
|
hypnotherapist: (_gender: Gender) => string;
|
|
44
44
|
illusionist: (_gender: Gender) => string;
|
|
45
45
|
journalist: (_gender: Gender) => string;
|
|
46
|
+
judge: (_gender: Gender) => string;
|
|
46
47
|
lawyer: (gender: Gender) => "avocat" | "avocate";
|
|
47
48
|
librarian: (_gender: Gender) => string;
|
|
48
49
|
leader: (gender: Gender) => "dirigeant" | "dirigeante";
|
|
@@ -43,6 +43,7 @@ export let peopleMessages_fr = {
|
|
|
43
43
|
hypnotherapist: (_gender) => "hypnothérapeute",
|
|
44
44
|
illusionist: (_gender) => "illusionniste",
|
|
45
45
|
journalist: (_gender) => "journaliste",
|
|
46
|
+
judge: (_gender) => "juge",
|
|
46
47
|
lawyer: (gender) => gender === Gender.male ? "avocat" : "avocate",
|
|
47
48
|
librarian: (_gender) => "bibliothécaire",
|
|
48
49
|
leader: (gender) => gender === Gender.male ? "dirigeant" : "dirigeante",
|
|
@@ -2,7 +2,7 @@ import path from "path";
|
|
|
2
2
|
import { ClassDomReplaceCommand } from "ssg-api";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
import { PeopleReplacerFactory } from "./PeopleReplacerFactory.js";
|
|
5
|
-
import {
|
|
5
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
6
6
|
import { PeopleHtmlRenderer } from "./PeopleHtmlRenderer.js";
|
|
7
7
|
import { PeopleService } from "@rr0/data";
|
|
8
8
|
describe("ClassDomReplaceCommand", () => {
|
|
@@ -10,9 +10,9 @@ describe("ClassDomReplaceCommand", () => {
|
|
|
10
10
|
const peopleRoot = "src/people";
|
|
11
11
|
const peopleFiles = [path.join(peopleRoot, "b/BeauJerome")];
|
|
12
12
|
const peopleRenderer = new PeopleHtmlRenderer();
|
|
13
|
-
const peopleService = new PeopleService(
|
|
13
|
+
const peopleService = new PeopleService(cmsTestUtil.dataService, cmsTestUtil.peopleFactory, { files: peopleFiles, rootDir: peopleRoot });
|
|
14
14
|
const command = new ClassDomReplaceCommand(new PeopleReplacerFactory(peopleService, peopleRenderer), "people");
|
|
15
|
-
const context =
|
|
15
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", `<span class="people">Jérôme Beau</span>`);
|
|
16
16
|
await command.execute(context);
|
|
17
17
|
expect(context.file.contents).toBe(`<html><head></head><body><span title="1972-, 50 ans, France, ufologue, Informaticien" class="country-fr occupation-ufologist occupation-softwareEngineer" translate="no"><a href="/src/people/b/BeauJerome/">Jérôme Beau</a></span></body></html>`);
|
|
18
18
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { PeopleReplacer } from "./PeopleReplacer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../test/index.js";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
import path from "path";
|
|
5
5
|
import { AllDataService, PeopleFactory, PeopleService, RR0EventFactory } from "@rr0/data";
|
|
6
6
|
import { PeopleHtmlRenderer } from "./PeopleHtmlRenderer.js";
|
|
7
7
|
describe("PeopleReplacer", () => {
|
|
8
|
-
const rootDir =
|
|
8
|
+
const rootDir = cmsTestUtil.filePath("people");
|
|
9
9
|
const files = [
|
|
10
10
|
path.join(rootDir, "j/Jésus"),
|
|
11
11
|
path.join(rootDir, "b/BeauJerome"),
|
|
@@ -28,7 +28,7 @@ describe("PeopleReplacer", () => {
|
|
|
28
28
|
const peopleService = new PeopleService(dataService, peopleFactory, { rootDir, files });
|
|
29
29
|
const peopleRenderer = new PeopleHtmlRenderer();
|
|
30
30
|
const replacer = new PeopleReplacer(peopleService, peopleRenderer);
|
|
31
|
-
const context =
|
|
31
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
|
|
32
32
|
{
|
|
33
33
|
const lastnameFirstElement = createPeopleElement(context, "Hynek, Josef Allen (Northwestern University, Evanston, Illinois)");
|
|
34
34
|
const replacement = await replacer.replacement(context, lastnameFirstElement);
|
|
@@ -45,7 +45,7 @@ describe("PeopleReplacer", () => {
|
|
|
45
45
|
const peopleService = new PeopleService(dataService, peopleFactory, { rootDir, files });
|
|
46
46
|
const peopleRenderer = new PeopleHtmlRenderer();
|
|
47
47
|
const replacer = new PeopleReplacer(peopleService, peopleRenderer);
|
|
48
|
-
const context =
|
|
48
|
+
const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
|
|
49
49
|
{
|
|
50
50
|
const peopleWithTitle = createPeopleElement(context, "Jésus");
|
|
51
51
|
const replacement = await replacer.replacement(context, peopleWithTitle);
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { AuthorReplaceCommand } from "./AuthorReplaceCommand.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cmsTestUtil } from "../../test/index.js";
|
|
3
3
|
import { describe, expect, test } from "@javarome/testscript";
|
|
4
4
|
import { RelativeTimeTextBuilder } from "../../time/index.js";
|
|
5
5
|
describe("AuthorReplaceCommand", async () => {
|
|
6
|
-
const timeTextBuilder =
|
|
6
|
+
const timeTextBuilder = cmsTestUtil.time.timeTextBuilder;
|
|
7
7
|
const relativeTimeTextBuilder = new RelativeTimeTextBuilder(timeTextBuilder);
|
|
8
|
-
const timeService = await
|
|
8
|
+
const timeService = await cmsTestUtil.time.getService();
|
|
9
9
|
test("no author", async () => {
|
|
10
|
-
const timeFile =
|
|
11
|
-
const command = new AuthorReplaceCommand(
|
|
12
|
-
const context =
|
|
10
|
+
const timeFile = cmsTestUtil.time.filePath("1/9/5/4/index.html");
|
|
11
|
+
const command = new AuthorReplaceCommand(cmsTestUtil.time.timeRenderer);
|
|
12
|
+
const context = cmsTestUtil.newHtmlContext(timeFile, `This is published by <!--#echo var="author" -->!`);
|
|
13
13
|
await command.execute(context);
|
|
14
14
|
expect(context.file.meta.author).toEqual([]);
|
|
15
15
|
expect(context.file.contents).toBe("This is published by !");
|
|
16
16
|
});
|
|
17
17
|
test("author only", async () => {
|
|
18
|
-
const timeFile =
|
|
19
|
-
const command = new AuthorReplaceCommand(
|
|
20
|
-
const context =
|
|
18
|
+
const timeFile = cmsTestUtil.time.filePath("1/9/5/4/10/index.html");
|
|
19
|
+
const command = new AuthorReplaceCommand(cmsTestUtil.time.timeRenderer);
|
|
20
|
+
const context = cmsTestUtil.newHtmlContext(timeFile, `This is published by <!--#echo var="author" -->!`);
|
|
21
21
|
context.file.meta.author.push("Beau, Jérôme");
|
|
22
22
|
const time = relativeTimeTextBuilder.build(undefined, context);
|
|
23
23
|
await command.execute(context);
|
|
@@ -25,9 +25,9 @@ describe("AuthorReplaceCommand", async () => {
|
|
|
25
25
|
expect(context.file.contents).toBe(`This is published by <div class="document-author"><span class="people">Beau, Jérôme</span>, <span class="time">${time}</span></div>!`);
|
|
26
26
|
});
|
|
27
27
|
test("copyright only", async () => {
|
|
28
|
-
const timeFile =
|
|
29
|
-
const command = new AuthorReplaceCommand(
|
|
30
|
-
const context =
|
|
28
|
+
const timeFile = cmsTestUtil.time.filePath("1/9/5/4/10/index.html");
|
|
29
|
+
const command = new AuthorReplaceCommand(cmsTestUtil.time.timeRenderer);
|
|
30
|
+
const context = cmsTestUtil.newHtmlContext(timeFile, `This is published by <!--#echo var="author" -->!`);
|
|
31
31
|
context.file.meta.copyright = "Some publication";
|
|
32
32
|
const time = relativeTimeTextBuilder.build(undefined, context);
|
|
33
33
|
await command.execute(context);
|
|
@@ -36,9 +36,9 @@ describe("AuthorReplaceCommand", async () => {
|
|
|
36
36
|
expect(context.file.contents).toBe(`This is published by <div class="document-author">Some publication</div>, <span class="time">${time}</span></div>!`);
|
|
37
37
|
});
|
|
38
38
|
test("author with copyright", async () => {
|
|
39
|
-
const timeFile =
|
|
40
|
-
const command = new AuthorReplaceCommand(
|
|
41
|
-
const context =
|
|
39
|
+
const timeFile = cmsTestUtil.time.filePath("1/9/5/4/10/index.html");
|
|
40
|
+
const command = new AuthorReplaceCommand(cmsTestUtil.time.timeRenderer);
|
|
41
|
+
const context = cmsTestUtil.newHtmlContext(timeFile, `This is published by <!--#echo var="author" -->!`);
|
|
42
42
|
context.file.meta.author.push("Beau, Jérôme");
|
|
43
43
|
context.file.meta.copyright = "Some publication";
|
|
44
44
|
await command.execute(context);
|