extwee 2.2.5 → 2.3.0

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.
Files changed (63) hide show
  1. package/.github/workflows/dependabot-automerge.yml +23 -0
  2. package/.github/workflows/nodejs.yml +4 -1
  3. package/README.md +29 -14
  4. package/SECURITY.md +1 -1
  5. package/build/extwee.web.min.js +2 -0
  6. package/build/extwee.web.min.js.LICENSE.txt +1 -0
  7. package/extwee.config.json +6 -0
  8. package/extwee.config.md +67 -0
  9. package/index.js +2 -0
  10. package/package.json +24 -23
  11. package/src/CLI/CommandLineProcessing.js +196 -0
  12. package/src/CLI/ProcessConfig/loadStoryFormat.js +102 -0
  13. package/src/CLI/ProcessConfig/readDirectories.js +46 -0
  14. package/src/CLI/ProcessConfig.js +175 -0
  15. package/src/CLI/isDirectory.js +27 -0
  16. package/src/CLI/isFile.js +28 -0
  17. package/src/Config/parser.js +30 -8
  18. package/src/Passage.js +17 -2
  19. package/src/Story.js +101 -1
  20. package/src/StoryFormat/compile.js +19 -0
  21. package/src/StoryFormat.js +51 -0
  22. package/src/extwee.js +20 -195
  23. package/test/Config/Config.test.js +40 -10
  24. package/test/Config/files/full.json +8 -0
  25. package/test/Config/files/valid.json +4 -3
  26. package/test/Config/isDirectory.test.js +44 -0
  27. package/test/Config/isFile.test.js +50 -0
  28. package/test/Config/loadStoryFormat.test.js +101 -0
  29. package/test/Config/readDirectories.test.js +68 -0
  30. package/test/Objects/Passage.test.js +5 -0
  31. package/test/Objects/Story.test.js +174 -0
  32. package/test/Objects/StoryFormat.test.js +60 -0
  33. package/test/TWS/Parse.test.js +0 -22
  34. package/test/Web/window.Extwee.test.js +85 -0
  35. package/types/Story.d.ts +26 -1
  36. package/types/StoryFormat/compile.d.ts +8 -0
  37. package/types/StoryFormat.d.ts +7 -0
  38. package/types/index.d.ts +4 -2
  39. package/types/src/CLI/CommandLineProcessing.d.ts +8 -0
  40. package/types/src/CLI/ProcessConfig/loadStoryFormat.d.ts +20 -0
  41. package/types/src/CLI/ProcessConfig/readDirectories.d.ts +9 -0
  42. package/types/src/CLI/ProcessConfig.d.ts +12 -0
  43. package/types/src/CLI/isDirectory.d.ts +1 -0
  44. package/types/src/CLI/isFile.d.ts +1 -0
  45. package/types/src/Config/parser.d.ts +6 -0
  46. package/types/src/Config/reader.d.ts +11 -0
  47. package/types/src/IFID/generate.d.ts +14 -0
  48. package/types/src/JSON/parse.d.ts +44 -1
  49. package/types/src/Passage.d.ts +49 -4
  50. package/types/src/Story.d.ts +110 -16
  51. package/types/src/StoryFormat/compile.d.ts +8 -0
  52. package/types/src/StoryFormat/parse.d.ts +46 -3
  53. package/types/src/StoryFormat.d.ts +69 -38
  54. package/types/src/TWS/parse.d.ts +3 -3
  55. package/types/src/Twee/parse.d.ts +3 -4
  56. package/types/src/Twine1HTML/compile.d.ts +3 -1
  57. package/types/src/Twine1HTML/parse.d.ts +3 -4
  58. package/types/src/Twine2ArchiveHTML/compile.d.ts +8 -0
  59. package/types/src/Twine2ArchiveHTML/parse.d.ts +31 -1
  60. package/types/src/Twine2HTML/compile.d.ts +7 -2
  61. package/types/src/Twine2HTML/parse.d.ts +12 -9
  62. package/index.html +0 -22
  63. package/test/TWS/TWSParser/Example1.tws +0 -150
@@ -1,9 +1,14 @@
1
1
  /**
2
2
  * Write a combination of Story + StoryFormat into Twine 2 HTML file.
3
+ * @see {@link https://github.com/iftechfoundation/twine-specs/blob/master/twine-2-htmloutput-spec.md Twine 2 HTML Output Specification}
4
+ * @function compile
3
5
  * @param {Story} story - Story object to write.
4
6
  * @param {StoryFormat} storyFormat - StoryFormat to write.
5
- * @returns {string} Twine 2 HTML.
7
+ * @returns {string} Twine 2 HTML based on StoryFormat and Story.
8
+ * @throws {Error} If story is not instance of Story.
9
+ * @throws {Error} If storyFormat is not instance of StoryFormat.
10
+ * @throws {Error} If storyFormat.source is empty string.
6
11
  */
7
12
  export function compile(story: Story, storyFormat: StoryFormat): string;
8
- import Story from '../Story.js';
13
+ import { Story } from '../Story.js';
9
14
  import StoryFormat from '../StoryFormat.js';
@@ -1,17 +1,20 @@
1
- export default parse;
2
1
  /**
3
2
  * Parse Twine 2 HTML into Story object.
4
3
  *
5
4
  * See: Twine 2 HTML Output Specification
6
5
  * (https://github.com/iftechfoundation/twine-specs/blob/master/twine-2-htmloutput-spec.md)
6
+ *
7
+ * Produces warnings for:
8
+ * - Missing name attribute on `<tw-storydata>` element.
9
+ * - Missing IFID attribute on `<tw-storydata>` element.
10
+ * - Malformed IFID attribute on `<tw-storydata>` element.
11
+ * @function parse
7
12
  * @param {string} content - Twine 2 HTML content to parse.
8
- * @returns {Story} Story
13
+ * @returns {Story} Story object based on Twine 2 HTML content.
14
+ * @throws {TypeError} Content is not a string.
15
+ * @throws {Error} Not Twine 2 HTML content!
16
+ * @throws {Error} Cannot parse passage data without name!
17
+ * @throws {Error} Passages are required to have PID!
9
18
  */
10
19
  export function parse(content: string): Story;
11
- /**
12
- * Try to escape Twine 2 meta-characters.
13
- * @param {string} result - Text to parse.
14
- * @returns {string} Escaped characters.
15
- */
16
- export function escapeMetacharacters(result: string): string;
17
- import Story from '../Story.js';
20
+ import { Story } from '../Story.js';
package/index.html DELETED
@@ -1,22 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Document</title>
6
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
7
- <meta name="description" content="Description">
8
- <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
9
- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
10
- </head>
11
- <body>
12
- <div id="app"></div>
13
- <script>
14
- window.$docsify = {
15
- name: '',
16
- repo: ''
17
- }
18
- </script>
19
- <!-- Docsify v4 -->
20
- <script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
21
- </body>
22
- </html>
@@ -1,150 +0,0 @@
1
- (dp0
2
- S'buildDestination'
3
- p1
4
- S''
5
- p2
6
- sS'saveDestination'
7
- p3
8
- V\u005c\u005cMac\u005cDropbox\u005cExample1.tws
9
- p4
10
- sS'metadata'
11
- p5
12
- (dp6
13
- sS'target'
14
- p7
15
- S'sugarcane'
16
- p8
17
- sS'storyPanel'
18
- p9
19
- (dp10
20
- S'widgets'
21
- p11
22
- (lp12
23
- (dp13
24
- S'selected'
25
- p14
26
- I00
27
- sS'pos'
28
- p15
29
- (lp16
30
- I10
31
- aI10
32
- asS'passage'
33
- p17
34
- (itiddlywiki
35
- Tiddler
36
- p18
37
- (dp20
38
- S'text'
39
- p21
40
- S'Your story will display this passage first. Edit it by double clicking it.'
41
- p22
42
- sS'title'
43
- p23
44
- S'Start'
45
- p24
46
- sS'modified'
47
- p25
48
- ctime
49
- struct_time
50
- p26
51
- ((I2023
52
- I9
53
- I3
54
- I14
55
- I38
56
- I52
57
- I6
58
- I246
59
- I1
60
- tp27
61
- (dp28
62
- tp29
63
- Rp30
64
- sS'tags'
65
- p31
66
- (lp32
67
- sS'created'
68
- p33
69
- g30
70
- sbsa(dp34
71
- g14
72
- I00
73
- sg15
74
- (lp35
75
- I10
76
- aI150
77
- asg17
78
- (itiddlywiki
79
- Tiddler
80
- p36
81
- (dp37
82
- g21
83
- S'Untitled Story'
84
- p38
85
- sg23
86
- S'StoryTitle'
87
- p39
88
- sg25
89
- g26
90
- ((I2023
91
- I9
92
- I3
93
- I14
94
- I38
95
- I52
96
- I6
97
- I246
98
- I1
99
- tp40
100
- (dp41
101
- tp42
102
- Rp43
103
- sg31
104
- (lp44
105
- sg33
106
- g43
107
- sbsa(dp45
108
- g14
109
- I00
110
- sg15
111
- (lp46
112
- I10
113
- aI290
114
- asg17
115
- (itiddlywiki
116
- Tiddler
117
- p47
118
- (dp48
119
- g21
120
- S'Anonymous'
121
- p49
122
- sg23
123
- S'StoryAuthor'
124
- p50
125
- sg25
126
- g26
127
- ((I2023
128
- I9
129
- I3
130
- I14
131
- I38
132
- I52
133
- I6
134
- I246
135
- I1
136
- tp51
137
- (dp52
138
- tp53
139
- Rp54
140
- sg31
141
- (lp55
142
- sg33
143
- g54
144
- sbsasS'scale'
145
- p56
146
- I1
147
- sS'snapping'
148
- p57
149
- I00
150
- ss.