typerlude 1.0.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.
@@ -0,0 +1,206 @@
1
+ # Third-Party Notices and Data Rights
2
+
3
+ Typerlude is a composite project. The Rust and JavaScript software is licensed
4
+ under the MIT License in `LICENSE`. Practice data written by Typerlude contributors
5
+ is released under CC0 1.0 Universal. Third-party material keeps the license or
6
+ public-domain status stated below; MIT does not replace those terms.
7
+
8
+ Compiled Rust dependencies keep their upstream terms. Their crate names,
9
+ versions, repositories, SPDX expressions, and complete license texts are
10
+ bundled in `THIRD_PARTY_LICENSES.html`. In particular, `option-ext` 0.2.0 is
11
+ MPL-2.0 licensed; its corresponding source is available from the upstream
12
+ repository at commit `272f22fc9ea1ac6b08f01704af52c4ac338df4e2`:
13
+ https://github.com/soc/option-ext/tree/272f22fc9ea1ac6b08f01704af52c4ac338df4e2.
14
+ The Typerlude MIT license does not replace or restrict the MPL-2.0 terms.
15
+
16
+ The complete offline legal texts are bundled under `assets/licenses/` in the
17
+ source tree, Cargo package, and root npm package, and under `licenses/` in
18
+ native npm packages and native archives. These layouts contain the same
19
+ snapshot bytes for `CC0-1.0.txt`, `CC-BY-2.0-FR.txt`, and `NORD-MIT.txt`.
20
+ The canonical online texts are:
21
+
22
+ - CC0 1.0 Universal: https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt
23
+ - Creative Commons Attribution 2.0 France (`CC-BY-2.0-FR`):
24
+ https://creativecommons.org/licenses/by/2.0/fr/legalcode.fr
25
+ - Nord MIT license: https://github.com/nordtheme/nord/blob/1cef71605416a222e57225b544540ce0fcec18d4/license
26
+
27
+ License sources were retrieved `2026-08-07`:
28
+
29
+ | Shipped file | Official source | Source bytes / SHA-256 | Shipped bytes / SHA-256 |
30
+ | --- | --- | --- | --- |
31
+ | `assets/licenses/CC0-1.0.txt` | https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt | 7048 / `a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499` | 7048 / `a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499` |
32
+ | `assets/licenses/CC-BY-2.0-FR.txt` | https://creativecommons.org/licenses/by/2.0/fr/legalcode.fr | 39707 / `af0d7ada8b9be52a6874238f4533512d0b2568595bf7cb3427e41f7c38847b71` | 15978 / `94690c30fa9b7650a55ea91f9158e3dab81a5e3a79ec1e07d9b0be8a5212b81a` |
33
+
34
+ The CC0 file is the official plain-text response byte-for-byte. The French
35
+ license file is a faithful, complete plain-text rendering of only the official
36
+ HTML `plain-text-marker` legal-code container. The official HTML endpoint was
37
+ byte-identical to the Creative Commons `cc-legal-tools-data` source at commit
38
+ `56f8f157d9d395f48683cae3695973665f0c9162`:
39
+ https://github.com/creativecommons/cc-legal-tools-data/blob/56f8f157d9d395f48683cae3695973665f0c9162/docs/licenses/by/2.0/fr/legalcode.fr.html.
40
+
41
+ ## Tatoeba sentence exports
42
+
43
+ The Korean and English sentence/quote packs select rows from
44
+ [Tatoeba](https://tatoeba.org/) official exports. The complete frozen audit inputs are
45
+ `assets/sources/tatoeba-selection.json` and
46
+ `assets/sources/tatoeba-snapshot.json`. The stable page for sentence ID
47
+ `<sentence-id>` is https://tatoeba.org/en/sentences/show/<sentence-id>. Every
48
+ selected item records `source_id = tatoeba:<sentence-id>`, that stable page,
49
+ the export's license and license URL, `modified = false`, and retrieval date
50
+ `2026-08-07`.
51
+
52
+ Retrieved: `2026-08-07`
53
+
54
+ | Frozen key | Official archive URL | Compressed bytes | Compressed SHA-256 | Decompressed bytes | Decompressed SHA-256 |
55
+ | --- | --- | ---: | --- | ---: | --- |
56
+ | `kor_detailed` | https://downloads.tatoeba.org/exports/per_language/kor/kor_sentences_detailed.tsv.bz2 | 304243 | `ffc266c1db3855728ee382b30530f854e3bf53760fb7c2bb36ddbd14d94efd96` | 1619506 | `d9ca57a59406753fea5510784ab60b778c713d5155cbf36fe84bc8909bda1687` |
57
+ | `kor_base` | https://downloads.tatoeba.org/exports/per_language/kor/kor_sentences_base.tsv.bz2 | 93636 | `805c8e9ecbf6c8e0ad34e05deba03403f30af5310edfb2de3f66140d7965c1f6` | 249817 | `8fe248bd4d755432cfe1894ca94c90b53b33946e3929d73fe137646a5455fcd8` |
58
+ | `eng_cc0` | https://downloads.tatoeba.org/exports/per_language/eng/eng_sentences_CC0.tsv.bz2 | 1288524 | `6ab169264a28008c25bf63042bf7535fc63137c9d7e09b7b8bd7812d10117d1b` | 4734738 | `9e8b3d587be1bd7cf299e09387aeec5707d48d988e1bea14cba091ebc5250262` |
59
+
60
+ Typerlude added only selection, packaging, and metadata. The sentence text is
61
+ unchanged: it was not normalized or otherwise modified (`modified = false`).
62
+
63
+ ### Korean: CC BY 2.0 France
64
+
65
+ The Korean rows come from Tatoeba's detailed export under Creative Commons
66
+ Attribution 2.0 France (`CC-BY-2.0-FR`),
67
+ https://creativecommons.org/licenses/by/2.0/fr/. They were joined to the
68
+ official Korean base export and are all original rows (`base = 0`). Attribution
69
+ is grouped below by the actual contributor frozen in the detailed export; the
70
+ numbers are Tatoeba sentence IDs.
71
+
72
+ - H_Liliom (1): 6960364
73
+ - KoreanBeaver (31): 2655609, 2655644, 2655646, 2655670, 2655671,
74
+ 2655674, 2655679, 2655680, 2655683, 2655686, 2655688, 2655690,
75
+ 2655695, 2655699, 2655721, 2656056, 2656061, 2658153, 2658155,
76
+ 2658157, 2658166, 2658167, 2658170, 2658171, 2658180, 2658132,
77
+ 2655650, 2655654, 2655655, 2655656, 2655666
78
+ - Queserasera (9): 3712940, 3718218, 3718338, 6304350, 6304353,
79
+ 6305023, 6305025, 6305030, 6305031
80
+ - Sudajaengi (41): 906593, 906595, 906600, 906602, 906608, 906613,
81
+ 906621, 906624, 906642, 910371, 914555, 942427, 943271, 943331,
82
+ 951947, 982062, 1022631, 1022661, 1022647, 1218625, 1218633,
83
+ 1218636, 1218638, 1218649, 1218669, 1219115, 1219121, 1219141,
84
+ 1219159, 1219179, 1219181, 1637128, 1637156, 1637158, 1637160,
85
+ 1637171, 906615, 906604, 5261931, 1022640, 1022653
86
+ - atitarev (10): 13187817, 13147201, 13146473, 13146489, 13148497,
87
+ 13130044, 13167418, 13170177, 13187950, 13205186
88
+ - cueyayotl (4): 1278329, 2856662, 2870614, 418360
89
+ - intertime (14): 11104746, 11104747, 11104748, 11104759, 11104763,
90
+ 11104764, 11104768, 11104749, 11104750, 11104751, 11104752,
91
+ 11104760, 11104761, 11104770
92
+ - rainbow4us (4): 3718270, 3718354, 4950397, 4952644
93
+ - rbbrbb (1): 3655501
94
+ - ssuss32 (4): 10572153, 10572155, 10572158, 3718343
95
+ - wubbol (1): 331283
96
+
97
+ ### English: explicit CC0 export
98
+
99
+ The English rows come only from Tatoeba's dedicated explicit-CC0 export under
100
+ CC0 1.0 Universal (`CC0-1.0`),
101
+ https://creativecommons.org/publicdomain/zero/1.0/. That export does not include
102
+ individual usernames, so the truthful collective attribution label is
103
+ `Tatoeba CC0 contributors`.
104
+
105
+ - Tatoeba CC0 contributors (120): 331259, 337215, 403860, 763114,
106
+ 2694734, 2694737, 2694740, 2694741, 2774346, 2804844, 3289035,
107
+ 3396931, 5047246, 8530262, 8679639, 8679712, 5047273, 5143055,
108
+ 5153393, 5159451, 5200520, 5342480, 6121806, 9158362, 6121968,
109
+ 6122006, 6319960, 6366618, 6718211, 6893978, 6900474, 7036151,
110
+ 7104289, 7108649, 8356983, 7166943, 7492431, 7545457, 7632877,
111
+ 7677650, 8502928, 8895474, 7742013, 7744148, 7744152, 7744157,
112
+ 7756804, 7792164, 7792237, 7799809, 7807073, 7807077, 7810087,
113
+ 7842725, 7865527, 7880677, 8415581, 8415585, 8415601, 11476060,
114
+ 7912910, 8636820, 8485239, 7948703, 7969669, 9415798, 8567766,
115
+ 7977020, 7977027, 7983650, 8573070, 7983678, 8589152, 7987815,
116
+ 8011630, 8014168, 8022176, 8047575, 8050968, 8089773, 8089833,
117
+ 8104349, 9054425, 8105963, 8606090, 8121223, 8612859, 8123782,
118
+ 8612869, 8180113, 8202928, 8286325, 8289409, 9414186, 9805138,
119
+ 8302381, 8612882, 8310548, 8613709, 8354372, 334553, 384016,
120
+ 9147454, 6824078, 7052915, 9158885, 9158888, 7087093, 7104386,
121
+ 8033223, 8037983, 8354398, 8354700, 8354702, 9161891, 8356841,
122
+ 9193323, 9227170, 8356993, 8357331
123
+
124
+ ## Public-domain Constitution excerpts
125
+
126
+ Both excerpts use the internal license identifier
127
+ `LicenseRef-Public-Domain`; no Creative Commons license is asserted over the
128
+ underlying constitutional text.
129
+
130
+ ### 대한민국헌법 제1조부터 제5조
131
+
132
+ `ko-text-constitution-articles-1-5` contains Korean Constitution Articles 1
133
+ through 5, source ID
134
+ `rok-constitution:articles-1-5`, retrieved `2026-08-07` from the official
135
+ National Law Information Center text:
136
+ https://www.law.go.kr/법령/대한민국헌법.
137
+
138
+ For direct keyboard practice, the official circled paragraph numerals `①` and
139
+ `②` were transcribed as `(1)` and `(2)` without changing the wording. This item
140
+ therefore declares `modified = true`.
141
+
142
+ The public-domain basis is Korean Copyright Act Article 7, which excludes the
143
+ Constitution and other official edicts from protected works:
144
+ https://www.law.go.kr/법령/저작권법/제7조. The National Law Information
145
+ Center's official reuse policy expressly permits unrestricted reuse, including
146
+ commercial reuse, of Article 7 material:
147
+ https://www.law.go.kr/lawPetitionForm.do?menuId=13&subMenuId=79.
148
+
149
+ ### U.S. Constitution, Article I, Section 2, Clauses 1–2
150
+
151
+ `en-text-constitution-article-1-section-2-clauses-1-2` contains exactly Article
152
+ I, Section 2, Clauses 1–2, source ID
153
+ `us-constitution:article-1-section-2-clauses-1-2`, attributed to the
154
+ Constitutional Convention of 1787 and retrieved `2026-08-07` from the official
155
+ Congress Constitution Annotated text:
156
+ https://constitution.congress.gov/constitution/article-1/.
157
+
158
+ The public-domain basis is expiration of the 1787 publication's copyright term.
159
+ The U.S. Copyright Office explains expiration and the public domain at
160
+ https://copyright.gov/what-is-copyright/; as of 2026, all U.S. works published
161
+ before 1931 are public domain. The exact clauses were cross-checked against the
162
+ National Archives official transcript at
163
+ https://www.archives.gov/founding-docs/constitution-transcript. Its official
164
+ download page expressly marks the Constitution images public domain:
165
+ https://www.archives.gov/founding-docs/downloads.
166
+
167
+ This basis is term expiration, not 17 U.S.C. § 105. Section 105 concerns U.S.
168
+ federal-government material such as the federal page or transcription; it is
169
+ not a claim that the federal government authored the 1787 Constitution.
170
+
171
+ ## Typerlude-authored practice data and traditional-story retellings
172
+
173
+ All Typerlude-authored word selections, essays, fiction, aphorisms, and retellings
174
+ are new Typerlude expression released by Typerlude contributors under CC0 1.0
175
+ Universal. In particular, the four retellings use only the named traditional or
176
+ public-domain plot bases below; no wording from a modern edition, translation,
177
+ or adaptation was copied.
178
+
179
+ - `ko-text-retelling-heungbu-nolbu`, “박씨 하나의 몫 — 흥부와 놀부 다시 쓰기”:
180
+ the anonymous traditional Korean narrative 흥부와 놀부.
181
+ - `ko-text-retelling-sun-moon-siblings`, “하늘에 남은 두 빛 — 해와 달이 된 오누이 다시 쓰기”:
182
+ the anonymous traditional Korean narrative 해와 달이 된 오누이.
183
+ - `en-text-retelling-tortoise-hare`, “Two Ways to the Finish — The Tortoise and
184
+ the Hare Retold”: the ancient Aesopic fable The Tortoise and the Hare.
185
+ - `en-text-retelling-stone-soup`, “The Empty Pot — Stone Soup Retold”: the
186
+ traditional European folktale Stone Soup.
187
+
188
+ ## Nord theme palette
189
+
190
+ The bundled `nord` theme uses the official
191
+ [Nord](https://github.com/nordtheme/nord) palette, package 0.2.1, pinned at
192
+ commit `1cef71605416a222e57225b544540ce0fcec18d4`. The palette source is
193
+ https://raw.githubusercontent.com/nordtheme/nord/1cef71605416a222e57225b544540ce0fcec18d4/src/nord.css
194
+ (5,380 bytes, SHA-256
195
+ `b931ac3732582b2066b2d6cadec02d9820ba7081e6e3e404c31cb62d9315a962`).
196
+ Typerlude maps unchanged hex values from that palette to its theme roles:
197
+ `#2e3440` background, `#d8dee9` foreground, `#88c0d0` accent, `#a3be8c`
198
+ correct, `#bf616a` error, `#ebcb8b` cursor, and `#81a1c1` dim. The dim value
199
+ provides at least 4.5:1 contrast against the background. Typerlude also renders
200
+ errors bold and underlined, and renders the cursor bold and reversed, so color
201
+ is not the only signal for either role.
202
+
203
+ Nord is distributed under the MIT License. Its byte-identical license is
204
+ bundled at `assets/licenses/NORD-MIT.txt` (1,132 bytes, SHA-256
205
+ `25ac8188d670bd2ad2ce2f4f55ab88573010ee9f7a4502543cb1eea1e2274f8a`).
206
+ Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de).
@@ -0,0 +1,64 @@
1
+ Paternité - 2.0
2
+
3
+ Creative Commons n'est pas un cabinet d'avocats et ne fournit pas de services de conseil juridique. La distribution de la présente version de ce contrat ne crée aucune relation juridique entre les parties au contrat présenté ci-après et Creative Commons. Creative Commons fournit cette offre de contrat-type en l'état, à seule fin d'information. Creative Commons ne saurait être tenu responsable des éventuels préjudices résultant du contenu ou de l'utilisation de ce contrat.
4
+
5
+ Contrat
6
+
7
+ L'Oeuvre (telle que définie ci-dessous) est mise à disposition selon les termes du présent contrat appelé Contrat Public Creative Commons (dénommé ici « CPCC » ou « Contrat »). L'Oeuvre est protégée par le droit de la propriété littéraire et artistique (droit d'auteur, droits voisins, droits des producteurs de bases de données) ou toute autre loi applicable. Toute utilisation de l'Oeuvre autrement qu'explicitement autorisée selon ce Contrat ou le droit applicable est interdite.
8
+ L'exercice sur l'Oeuvre de tout droit proposé par le présent contrat vaut acceptation de celui-ci. Selon les termes et les obligations du présent contrat, la partie Offrante propose à la partie Acceptante l'exercice de certains droits présentés ci-après, et l'Acceptant en approuve les termes et conditions d'utilisation.
9
+
10
+ 1. Définitions
11
+
12
+ a. « Oeuvre » : oeuvre de l'esprit protégeable par le droit de la propriété littéraire et artistique ou toute loi applicable et qui est mise à disposition selon les termes du présent Contrat.
13
+ b. « Oeuvre dite Collective » : une oeuvre dans laquelle l'oeuvre, dans sa forme intégrale et non modifiée, est assemblée en un ensemble collectif avec d'autres contributions qui constituent en elles-mêmes des oeuvres séparées et indépendantes. Constituent notamment des Oeuvres dites Collectives les publications périodiques, les anthologies ou les encyclopédies. Aux termes de la présente autorisation, une oeuvre qui constitue une Oeuvre dite Collective ne sera pas considérée comme une Oeuvre dite Dérivée (telle que définie ci-après).
14
+ c. « Oeuvre dite Dérivée » : une oeuvre créée soit à partir de l'Oeuvre seule, soit à partir de l'Oeuvre et d'autres oeuvres préexistantes. Constituent notamment des Oeuvres dites Dérivées les traductions, les arrangements musicaux, les adaptations théâtrales, littéraires ou cinématographiques, les enregistrements sonores, les reproductions par un art ou un procédé quelconque, les résumés, ou toute autre forme sous laquelle l'Oeuvre puisse être remaniée, modifiée, transformée ou adaptée, à l'exception d'une oeuvre qui constitue une Oeuvre dite Collective. Une Oeuvre dite Collective ne sera pas considérée comme une Oeuvre dite Dérivée aux termes du présent Contrat. Dans le cas où l'Oeuvre serait une composition musicale ou un enregistrement sonore, la synchronisation de l'oeuvre avec une image animée sera considérée comme une Oeuvre dite Dérivée pour les propos de ce Contrat.
15
+ d. « Auteur original » : la ou les personnes physiques qui ont créé l'Oeuvre.
16
+ e. « Offrant » : la ou les personne(s) physique(s) ou morale(s) qui proposent la mise à disposition de l'Oeuvre selon les termes du présent Contrat.
17
+ f. « Acceptant » : la personne physique ou morale qui accepte le présent contrat et exerce des droits sans en avoir violé les termes au préalable ou qui a reçu l'autorisation expresse de l'Offrant d'exercer des droits dans le cadre du présent contrat malgré une précédente violation de ce contrat.
18
+
19
+ 2. Exceptions aux droits exclusifs. Aucune disposition de ce contrat n'a pour intention de réduire, limiter ou restreindre les prérogatives issues des exceptions aux droits, de l'épuisement des droits ou d'autres limitations aux droits exclusifs des ayants droit selon le droit de la propriété littéraire et artistique ou les autres lois applicables.
20
+
21
+ 3. Autorisation. Soumis aux termes et conditions définis dans cette autorisation, et ceci pendant toute la durée de protection de l'Oeuvre par le droit de la propriété littéraire et artistique ou le droit applicable, l'Offrant accorde à l'Acceptant l'autorisation mondiale d'exercer à titre gratuit et non exclusif les droits suivants :
22
+
23
+ a. reproduire l'Oeuvre, incorporer l'Oeuvre dans une ou plusieurs Oeuvres dites Collectives et reproduire l'Oeuvre telle qu'incorporée dans lesdites Oeuvres dites Collectives;
24
+ b. créer et reproduire des Oeuvres dites Dérivées;
25
+ c. distribuer des exemplaires ou enregistrements, présenter, représenter ou communiquer l'Oeuvre au public par tout procédé technique, y compris incorporée dans des Oeuvres Collectives;
26
+ d. distribuer des exemplaires ou phonogrammes, présenter, représenter ou communiquer au public des Oeuvres dites Dérivées par tout procédé technique;
27
+ e. lorsque l'Oeuvre est une base de données, extraire et réutiliser des parties substantielles de l'Oeuvre.
28
+
29
+ Les droits mentionnés ci-dessus peuvent être exercés sur tous les supports, médias, procédés techniques et formats. Les droits ci-dessus incluent le droit d'effectuer les modifications nécessaires techniquement à l'exercice des droits dans d'autres formats et procédés techniques. L'exercice de tous les droits qui ne sont pas expressément autorisés par l'Offrant ou dont il n'aurait pas la gestion demeure réservé, notamment les mécanismes de gestion collective obligatoire applicables décrits à l'article 4(c).
30
+
31
+ 4. Restrictions. L'autorisation accordée par l'article 3 est expressément assujettie et limitée par le respect des restrictions suivantes :
32
+
33
+ a. L'Acceptant peut reproduire, distribuer, représenter ou communiquer au public l'Oeuvre y compris par voie numérique uniquement selon les termes de ce Contrat. L'Acceptant doit inclure une copie ou l'adresse Internet (Identifiant Uniforme de Ressource) du présent Contrat à toute reproduction ou enregistrement de l'Oeuvre que l'Acceptant distribue, représente ou communique au public y compris par voie numérique. L'Acceptant ne peut pas offrir ou imposer de conditions d'utilisation de l'Oeuvre qui altèrent ou restreignent les termes du présent Contrat ou l'exercice des droits qui y sont accordés au bénéficiaire. L'Acceptant ne peut pas céder de droits sur l'Oeuvre. L'Acceptant doit conserver intactes toutes les informations qui renvoient à ce Contrat et à l'exonération de responsabilité. L'Acceptant ne peut pas reproduire, distribuer, représenter ou communiquer au public l'Oeuvre, y compris par voie numérique, en utilisant une mesure technique de contrôle d'accès ou de contrôle d'utilisation qui serait contradictoire avec les termes de cet Accord contractuel. Les mentions ci-dessus s'appliquent à l'Oeuvre telle qu'incorporée dans une Oeuvre dite Collective, mais, en dehors de l'Oeuvre en elle-même, ne soumettent pas l'Oeuvre dite Collective, aux termes du présent Contrat. Si l'Acceptant crée une Oeuvre dite Collective, à la demande de tout Offrant, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Collective toute référence au dit Offrant, comme demandé. Si l'Acceptant crée une Oeuvre dite Collective, à la demande de tout Auteur, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Collective toute référence au dit Auteur, comme demandé. Si l'Acceptant crée une Oeuvre dite Dérivée, à la demande de tout Offrant, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Dérivée toute référence au dit Offrant, comme demandé. Si l'Acceptant crée une Oeuvre dite Dérivée, à la demande de tout Auteur, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Dérivée toute référence au dit Auteur, comme demandé.
34
+ b. Si l'Acceptant reproduit, distribue, représente ou communique au public, y compris par voie numérique, l'Oeuvre ou toute Oeuvre dite Dérivée ou toute Oeuvre dite Collective, il doit conserver intactes toutes les informations sur le régime des droits et en attribuer la paternité à l'Auteur Original, de manière raisonnable au regard au médium ou au moyen utilisé. Il doit communiquer le nom de l'Auteur Original ou son éventuel pseudonyme s'il est indiqué ; le titre de l'Oeuvre Originale s'il est indiqué ; dans la mesure du possible, l'adresse Internet ou Identifiant Uniforme de Ressource (URI), s'il existe, spécifié par l'Offrant comme associé à l'Oeuvre, à moins que cette adresse ne renvoie pas aux informations légales (paternité et conditions d'utilisation de l'Oeuvre). Dans le cas d'une Oeuvre dite Dérivée, il doit indiquer les éléments identifiant l'utilisation l'Oeuvre dans l'Oeuvre dite Dérivée par exemple « Traduction anglaise de l'Oeuvre par l'Auteur Original » ou « Scénario basé sur l'Oeuvre par l'Auteur Original ». Ces obligations d'attribution de paternité doivent être exécutées de manière raisonnable. Cependant, dans le cas d'une Oeuvre dite Dérivée ou d'une Oeuvre dite Collective, ces informations doivent, au minimum, apparaître à la place et de manière aussi visible que celles à laquelle apparaissent les informations de même nature.
35
+ c. Dans le cas où une utilisation de l'Oeuvre serait soumise à un régime légal de gestion collective obligatoire, l'Offrant se réserve le droit exclusif de collecter ces redevances par l'intermédiaire de la société de perception et de répartition des droits compétente. Sont notamment concernés la radiodiffusion et la communication dans un lieu public de phonogrammes publiés à des fins de commerce, certains cas de retransmission par câble et satellite, la copie privée d'Oeuvres fixées sur phonogrammes ou vidéogrammes, la reproduction par reprographie.
36
+
37
+ 5. Garantie et exonération de responsabilité
38
+
39
+ a. En mettant l'Oeuvre à la disposition du public selon les termes de ce Contrat, l'Offrant déclare de bonne foi qu'à sa connaissance et dans les limites d'une enquête raisonnable :
40
+ i. L'Offrant a obtenu tous les droits sur l'Oeuvre nécessaires pour pouvoir autoriser l'exercice des droits accordés par le présent Contrat, et permettre la jouissance paisible et l'exercice licite de ces droits, ceci sans que l'Acceptant n'ait aucune obligation de verser de rémunération ou tout autre paiement ou droits, dans la limite des mécanismes de gestion collective obligatoire applicables décrits à l'article 4(e);
41
+ ii. L'Oeuvre n'est constitutive ni d'une violation des droits de tiers, notamment du droit de la propriété littéraire et artistique, du droit des marques, du droit de l'information, du droit civil ou de tout autre droit, ni de diffamation, de violation de la vie privée ou de tout autre préjudice délictuel à l'égard de toute tierce partie.
42
+ b. A l'exception des situations expressément mentionnées dans le présent Contrat ou dans un autre accord écrit, ou exigées par la loi applicable, l'Oeuvre est mise à disposition en l'état sans garantie d'aucune sorte, qu'elle soit expresse ou tacite, y compris à l'égard du contenu ou de l'exactitude de l'Oeuvre.
43
+
44
+ 6. Limitation de responsabilité. A l'exception des garanties d'ordre public imposées par la loi applicable et des réparations imposées par le régime de la responsabilité vis-à-vis d'un tiers en raison de la violation des garanties prévues par l'article 5 du présent contrat, l'Offrant ne sera en aucun cas tenu responsable vis-à-vis de l'Acceptant, sur la base d'aucune théorie légale ni en raison d'aucun préjudice direct, indirect, matériel ou moral, résultant de l'exécution du présent Contrat ou de l'utilisation de l'Oeuvre, y compris dans l'hypothèse où l'Offrant avait connaissance de la possible existence d'un tel préjudice.
45
+
46
+ 7. Résiliation
47
+
48
+ a. Tout manquement aux termes du contrat par l'Acceptant entraîne la résiliation automatique du Contrat et la fin des droits qui en découlent. Cependant, le contrat conserve ses effets envers les personnes physiques ou morales qui ont reçu de la part de l'Acceptant, en exécution du présent contrat, la mise à disposition d'Oeuvres dites Dérivées, ou d'Oeuvres dites Collectives, ceci tant qu'elles respectent pleinement leurs obligations. Les sections 1, 2, 5, 6 et 7 du contrat continuent à s'appliquer après la résiliation de celui-ci.
49
+ b. Dans les limites indiquées ci-dessus, le présent Contrat s'applique pendant toute la durée de protection de l'Oeuvre selon le droit applicable. Néanmoins, l'Offrant se réserve à tout moment le droit d'exploiter l'Oeuvre sous des conditions contractuelles différentes, ou d'en cesser la diffusion; cependant, le recours à cette option ne doit pas conduire à retirer les effets du présent Contrat (ou de tout contrat qui a été ou doit être accordé selon les termes de ce Contrat), et ce Contrat continuera à s'appliquer dans tous ses effets jusqu'à ce que sa résiliation intervienne dans les conditions décrites ci-dessus.
50
+
51
+ 8. Divers
52
+
53
+ a. A chaque reproduction ou communication au public par voie numérique de l'Oeuvre ou d'une Oeuvre dite Collective par l'Acceptant, l'Offrant propose au bénéficiaire une offre de mise à disposition de l'Oeuvre dans des termes et conditions identiques à ceux accordés à la partie Acceptante dans le présent Contrat.
54
+ b. A chaque reproduction ou communication au public par voie numérique d'une Oeuvre dite Dérivée par l'Acceptant, l'Offrant propose au bénéficiaire une offre de mise à disposition du bénéficiaire de l'Oeuvre originale dans des termes et conditions identiques à ceux accordés à la partie Acceptante dans le présent Contrat.
55
+ c. La nullité ou l'inapplicabilité d'une quelconque disposition de ce Contrat au regard de la loi applicable n'affecte pas celle des autres dispositions qui resteront pleinement valides et applicables. Sans action additionnelle par les parties à cet accord, lesdites dispositions devront être interprétées dans la mesure minimum nécessaire à leur validité et leur applicabilité.
56
+ d. Aucune limite, renonciation ou modification des termes ou dispositions du présent Contrat ne pourra être acceptée sans le consentement écrit et signé de la partie compétente.
57
+ e. Ce Contrat constitue le seul accord entre les parties à propos de l'Oeuvre mise ici à disposition. Il n'existe aucun élément annexe, accord supplémentaire ou mandat portant sur cette Oeuvre en dehors des éléments mentionnés ici. L'Offrant ne sera tenu par aucune disposition supplémentaire qui pourrait apparaître dans une quelconque communication en provenance de l'Acceptant. Ce Contrat ne peut être modifié sans l'accord mutuel écrit de l'Offrant et de l'Acceptant.
58
+ f. Le droit applicable est le droit français.
59
+
60
+ Creative Commons n'est pas partie à ce Contrat et n'offre aucune forme de garantie relative à l'Oeuvre. Creative Commons décline toute responsabilité à l'égard de l'Acceptant ou de toute autre partie, quel que soit le fondement légal de cette responsabilité et quel que soit le préjudice subi, direct, indirect, matériel ou moral, qui surviendrait en rapport avec le présent Contrat. Cependant, si Creative Commons s'est expressément identifié comme Offrant pour mettre une Oeuvre à disposition selon les termes de ce Contrat, Creative Commons jouira de tous les droits et obligations d'un Offrant.
61
+
62
+ A l'exception des fins limitées à informer le public que l'Oeuvre est mise à disposition sous CPCC, aucune des parties n'utilisera la marque « Creative Commons » ou toute autre indication ou logo afférent sans le consentement préalable écrit de Creative Commons. Toute utilisation autorisée devra être effectuée en conformité avec les lignes directrices de Creative Commons à jour au moment de l'utilisation, telles qu'elles sont disponibles sur son site Internet ou sur simple demande.
63
+
64
+ Creative Commons peut être contacté à https://creativecommons.org/ .
@@ -0,0 +1,121 @@
1
+ Creative Commons Legal Code
2
+
3
+ CC0 1.0 Universal
4
+
5
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6
+ LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9
+ REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10
+ PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11
+ THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12
+ HEREUNDER.
13
+
14
+ Statement of Purpose
15
+
16
+ The laws of most jurisdictions throughout the world automatically confer
17
+ exclusive Copyright and Related Rights (defined below) upon the creator
18
+ and subsequent owner(s) (each and all, an "owner") of an original work of
19
+ authorship and/or a database (each, a "Work").
20
+
21
+ Certain owners wish to permanently relinquish those rights to a Work for
22
+ the purpose of contributing to a commons of creative, cultural and
23
+ scientific works ("Commons") that the public can reliably and without fear
24
+ of later claims of infringement build upon, modify, incorporate in other
25
+ works, reuse and redistribute as freely as possible in any form whatsoever
26
+ and for any purposes, including without limitation commercial purposes.
27
+ These owners may contribute to the Commons to promote the ideal of a free
28
+ culture and the further production of creative, cultural and scientific
29
+ works, or to gain reputation or greater distribution for their Work in
30
+ part through the use and efforts of others.
31
+
32
+ For these and/or other purposes and motivations, and without any
33
+ expectation of additional consideration or compensation, the person
34
+ associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35
+ is an owner of Copyright and Related Rights in the Work, voluntarily
36
+ elects to apply CC0 to the Work and publicly distribute the Work under its
37
+ terms, with knowledge of his or her Copyright and Related Rights in the
38
+ Work and the meaning and intended legal effect of CC0 on those rights.
39
+
40
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
41
+ protected by copyright and related or neighboring rights ("Copyright and
42
+ Related Rights"). Copyright and Related Rights include, but are not
43
+ limited to, the following:
44
+
45
+ i. the right to reproduce, adapt, distribute, perform, display,
46
+ communicate, and translate a Work;
47
+ ii. moral rights retained by the original author(s) and/or performer(s);
48
+ iii. publicity and privacy rights pertaining to a person's image or
49
+ likeness depicted in a Work;
50
+ iv. rights protecting against unfair competition in regards to a Work,
51
+ subject to the limitations in paragraph 4(a), below;
52
+ v. rights protecting the extraction, dissemination, use and reuse of data
53
+ in a Work;
54
+ vi. database rights (such as those arising under Directive 96/9/EC of the
55
+ European Parliament and of the Council of 11 March 1996 on the legal
56
+ protection of databases, and under any national implementation
57
+ thereof, including any amended or successor version of such
58
+ directive); and
59
+ vii. other similar, equivalent or corresponding rights throughout the
60
+ world based on applicable law or treaty, and any national
61
+ implementations thereof.
62
+
63
+ 2. Waiver. To the greatest extent permitted by, but not in contravention
64
+ of, applicable law, Affirmer hereby overtly, fully, permanently,
65
+ irrevocably and unconditionally waives, abandons, and surrenders all of
66
+ Affirmer's Copyright and Related Rights and associated claims and causes
67
+ of action, whether now known or unknown (including existing as well as
68
+ future claims and causes of action), in the Work (i) in all territories
69
+ worldwide, (ii) for the maximum duration provided by applicable law or
70
+ treaty (including future time extensions), (iii) in any current or future
71
+ medium and for any number of copies, and (iv) for any purpose whatsoever,
72
+ including without limitation commercial, advertising or promotional
73
+ purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74
+ member of the public at large and to the detriment of Affirmer's heirs and
75
+ successors, fully intending that such Waiver shall not be subject to
76
+ revocation, rescission, cancellation, termination, or any other legal or
77
+ equitable action to disrupt the quiet enjoyment of the Work by the public
78
+ as contemplated by Affirmer's express Statement of Purpose.
79
+
80
+ 3. Public License Fallback. Should any part of the Waiver for any reason
81
+ be judged legally invalid or ineffective under applicable law, then the
82
+ Waiver shall be preserved to the maximum extent permitted taking into
83
+ account Affirmer's express Statement of Purpose. In addition, to the
84
+ extent the Waiver is so judged Affirmer hereby grants to each affected
85
+ person a royalty-free, non transferable, non sublicensable, non exclusive,
86
+ irrevocable and unconditional license to exercise Affirmer's Copyright and
87
+ Related Rights in the Work (i) in all territories worldwide, (ii) for the
88
+ maximum duration provided by applicable law or treaty (including future
89
+ time extensions), (iii) in any current or future medium and for any number
90
+ of copies, and (iv) for any purpose whatsoever, including without
91
+ limitation commercial, advertising or promotional purposes (the
92
+ "License"). The License shall be deemed effective as of the date CC0 was
93
+ applied by Affirmer to the Work. Should any part of the License for any
94
+ reason be judged legally invalid or ineffective under applicable law, such
95
+ partial invalidity or ineffectiveness shall not invalidate the remainder
96
+ of the License, and in such case Affirmer hereby affirms that he or she
97
+ will not (i) exercise any of his or her remaining Copyright and Related
98
+ Rights in the Work or (ii) assert any associated claims and causes of
99
+ action with respect to the Work, in either case contrary to Affirmer's
100
+ express Statement of Purpose.
101
+
102
+ 4. Limitations and Disclaimers.
103
+
104
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
105
+ surrendered, licensed or otherwise affected by this document.
106
+ b. Affirmer offers the Work as-is and makes no representations or
107
+ warranties of any kind concerning the Work, express, implied,
108
+ statutory or otherwise, including without limitation warranties of
109
+ title, merchantability, fitness for a particular purpose, non
110
+ infringement, or the absence of latent or other defects, accuracy, or
111
+ the present or absence of errors, whether or not discoverable, all to
112
+ the greatest extent permissible under applicable law.
113
+ c. Affirmer disclaims responsibility for clearing rights of other persons
114
+ that may apply to the Work or any use thereof, including without
115
+ limitation any person's Copyright and Related Rights in the Work.
116
+ Further, Affirmer disclaims responsibility for obtaining any necessary
117
+ consents, permissions or other rights required for any use of the
118
+ Work.
119
+ d. Affirmer understands and acknowledges that Creative Commons is not a
120
+ party to this document and has no duty or obligation with respect to
121
+ this CC0 or use of the Work.
@@ -0,0 +1,21 @@
1
+ MIT License (MIT)
2
+
3
+ Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { spawnSync } = require("node:child_process");
4
+
5
+ const nativePackages = [
6
+ { platform: "darwin", arch: "arm64", name: "typerlude-darwin-arm64", executable: "typerlude" },
7
+ { platform: "darwin", arch: "x64", name: "typerlude-darwin-x64", executable: "typerlude" },
8
+ { platform: "linux", arch: "arm64", name: "typerlude-linux-arm64", executable: "typerlude" },
9
+ { platform: "linux", arch: "x64", name: "typerlude-linux-x64", executable: "typerlude" },
10
+ { platform: "win32", arch: "arm64", name: "typerlude-win32-arm64-msvc", executable: "typerlude.exe" },
11
+ { platform: "win32", arch: "x64", name: "typerlude-win32-x64-msvc", executable: "typerlude.exe" },
12
+ ];
13
+
14
+ function packageFor(platform, arch) {
15
+ const result = nativePackages.find((item) => item.platform === platform && item.arch === arch);
16
+ if (!result) throw new Error(`unsupported platform: ${platform}-${arch}`);
17
+ return [result.name, result.executable];
18
+ }
19
+
20
+ function run(argv, platform, arch) {
21
+ const [packageName, executable] = packageFor(platform, arch);
22
+ let binary;
23
+ try {
24
+ binary = require.resolve(`${packageName}/${executable}`);
25
+ } catch {
26
+ throw new Error(
27
+ `optional package ${packageName} is unavailable; reinstall without --no-optional`,
28
+ );
29
+ }
30
+
31
+ const result = spawnSync(binary, argv, {
32
+ cwd: process.cwd(),
33
+ env: { ...process.env, TYPERLUDE_INSTALL_METHOD: "npm" },
34
+ stdio: "inherit",
35
+ windowsHide: false,
36
+ });
37
+ if (result.error) throw result.error;
38
+ if (result.signal) process.kill(process.pid, result.signal);
39
+ process.exitCode = result.status ?? 1;
40
+ }
41
+
42
+ if (require.main === module) run(process.argv.slice(2), process.platform, process.arch);
43
+
44
+ module.exports = { nativePackages, packageFor };
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "typerlude",
3
+ "version": "1.0.0",
4
+ "description": "Offline-first Korean and English terminal typing tutor",
5
+ "license": "SEE LICENSE IN LICENSE",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/baba9811/typerlude.git"
9
+ },
10
+ "homepage": "https://github.com/baba9811/typerlude#readme",
11
+ "bugs": "https://github.com/baba9811/typerlude/issues",
12
+ "type": "commonjs",
13
+ "bin": {
14
+ "typerlude": "bin/typerlude.js"
15
+ },
16
+ "files": [
17
+ "bin/typerlude.js",
18
+ "LICENSE",
19
+ "README.md",
20
+ "README.ko.md",
21
+ "THIRD_PARTY_NOTICES.md",
22
+ "THIRD_PARTY_LICENSES.html",
23
+ "assets/licenses"
24
+ ],
25
+ "engines": {
26
+ "node": ">=18"
27
+ },
28
+ "scripts": {
29
+ "test": "node --test tests/launcher.test.js scripts/import-tatoeba.test.mjs scripts/check-versions.test.mjs scripts/stage-platform-package.test.mjs scripts/publish-npm-packages.test.mjs && node scripts/check-versions.mjs",
30
+ "test:launcher": "node --test tests/launcher.test.js",
31
+ "package-check": "node scripts/verify-package.mjs"
32
+ },
33
+ "optionalDependencies": {
34
+ "typerlude-darwin-arm64": "1.0.0",
35
+ "typerlude-darwin-x64": "1.0.0",
36
+ "typerlude-linux-arm64": "1.0.0",
37
+ "typerlude-linux-x64": "1.0.0",
38
+ "typerlude-win32-arm64-msvc": "1.0.0",
39
+ "typerlude-win32-x64-msvc": "1.0.0"
40
+ },
41
+ "publishConfig": {
42
+ "access": "public"
43
+ }
44
+ }