@mikedown/core 0.0.0-stage → 0.2.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0
4
+
5
+ - `bindMikeDownValue` (`@mikedown/core/binding`): the framework-neutral value binding the React, Vue, Angular and web component wrappers are built on (pristine writes, debounced change, flush on blur, read-only, disabled and touched state).
6
+ - Editor options for `placeholder`, `id` and ARIA naming, and a landmark role on the editor.
7
+ - The bound theme is re-applied only when it changes, which ends a theme update loop.
8
+ - List markers are set explicitly, so page CSS resets can no longer strip bullets and numbers.
9
+ - Completed task text uses the muted text color, keeping at least 4.5:1 contrast in light and dark themes.
10
+ - Task checkboxes are named after their item for screen readers and have a 24 by 24px click and touch target.
11
+ - Toolbar buttons that show text have screen reader names that start with that text; toolbar icons are hidden from assistive technology.
12
+ - The floating table toolbar shows only while a focused cursor is in a table.
13
+ - Toolbar buttons that don't fit move into a More (⋯) menu at the end of the toolbar instead of being cut off.
14
+
15
+ ## 0.1.0
16
+
17
+ First public release. The MikeDown WYSIWYG markdown editor as a framework-agnostic package, the same editor that ships in the MikeDown VS Code extension and MikeDown Desktop.
18
+
19
+ - `createMikeDownEditor(element, options)` returns a `MikeDownEditorHandle` (`getMarkdown`, `setMarkdown`, `markSaved`, `setTheme`, `updateSettings`, `setReadOnly`, `setTags`, `setBacklinks`, `setDocMeta`, `scrollToAnchor`, `getHtml`, `command`, `on`, `destroy`).
20
+ - `MikeDownHost` interface: only `onChange` is required; every other method is optional and turns its feature off when omitted. `NoopHost` is a minimal ready-made host.
21
+ - Rich editing on TipTap (ProseMirror) with `tiptap-markdown`, plus a CodeMirror 6 source mode (`Cmd/Ctrl+/`).
22
+ - Feature switches via `options.features`: toolbar, sidebar, source mode, slash commands, spell check, math (KaTeX), Mermaid, find and replace, frontmatter.
23
+ - Tables, task lists, GFM callouts, `==highlight==`, footnotes, emoji, wikilinks and code blocks with a language picker.
24
+ - Themeable through `--mikedown-*` custom properties (`@mikedown/core/tokens.css`), light, dark and auto themes. Styles ship as `@mikedown/core/styles.css`.
25
+ - Bundled Hunspell dictionaries (`en`, `en-GB`) in `dist/dictionaries/`, used only when `spellcheckDictionaryUrl` is set.
26
+ - Shared pure helpers under `@mikedown/core/shared/*`.
27
+ - ESM only. TipTap, CodeMirror, lowlight and `katex` are peer dependencies; `mermaid` is an optional peer.
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Michael Joseph
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.
package/README.md CHANGED
@@ -1,3 +1,218 @@
1
- # Temporary Holding Version
1
+ # @mikedown/core
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The MikeDown WYSIWYG markdown editor as a framework-agnostic package: TipTap (ProseMirror) for the rich view, CodeMirror 6 for source mode, `tiptap-markdown` for parse and serialize. It is the same editor that ships in the MikeDown VS Code extension. No Angular, React or VS Code dependency.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @mikedown/core
9
+ ```
10
+
11
+ npm 7+ and pnpm 8+ install the peer dependencies for you (see [Peer dependencies](#peer-dependencies)); Yarn does not, so use the `yarn add` line under [Framework wrappers](#framework-wrappers). The package is ESM only.
12
+
13
+ ## Minimal example
14
+
15
+ ```ts
16
+ import { createMikeDownEditor } from '@mikedown/core';
17
+ import '@mikedown/core/styles.css';
18
+
19
+ const handle = createMikeDownEditor(document.getElementById('editor')!, {
20
+ host: {
21
+ onChange(markdown, { pristine }) {
22
+ if (!pristine) saveSomewhere(markdown);
23
+ },
24
+ },
25
+ initialMarkdown: '# Hello\n\nStart typing.',
26
+ theme: 'auto',
27
+ });
28
+
29
+ handle.getMarkdown();
30
+ handle.setTheme('dark');
31
+ handle.destroy();
32
+ ```
33
+
34
+ The editor fills its container (`height: 100%`), so give the container a height. Without one the editor falls back to a `240px` minimum height; set `--mikedown-min-height` to change that floor.
35
+
36
+ ## Binding a value
37
+
38
+ `bindMikeDownValue` is the glue a form field or framework wrapper needs, in one call. Import it from the package root or from `@mikedown/core/binding`.
39
+
40
+ ```ts
41
+ import { bindMikeDownValue } from '@mikedown/core/binding';
42
+
43
+ const field = bindMikeDownValue(container, {
44
+ initialValue: '# Hello',
45
+ debounceMs: 150,
46
+ onValue: (markdown) => save(markdown),
47
+ theme: 'auto',
48
+ darkSelector: 'html[data-mode=dark]',
49
+ id: 'notes',
50
+ ariaLabel: 'Meeting notes',
51
+ placeholder: 'Start writing…',
52
+ });
53
+
54
+ field.setValue(fromServer); // loads pristine; skipped when equal to the current value
55
+ field.flush(); // report a pending change now
56
+ field.setTheme('dark');
57
+ field.focus();
58
+ field.handle; // the MikeDownEditorHandle
59
+ field.destroy(); // flushes, then removes observers and listeners
60
+ ```
61
+
62
+ - **Change reporting.** `onValue` fires after `debounceMs` of quiet and at once on blur. `outputTransform(markdown)` maps the text on its way out; `setValue` compares against its output.
63
+ - **Theme.** `auto` is dark when the container or an ancestor matches `darkSelector` (it uses `closest()`, so both `html[data-mode=dark]` and a `.dark-theme` wrapper work), re-checked when attributes change. Without a selector it follows `prefers-color-scheme`.
64
+ - **Accessibility.** `id`, `ariaLabel` and `ariaLabelledBy` go on the editable surface in both views (rich text and source). With only an `id`, the binding looks up `label[for=id]`, uses it as the name and focuses the editor when it is clicked. `ariaLabelledBy` is the sturdier choice. The accessible name follows ARIA's order: `aria-labelledby`, then `aria-label`, then `<label for>` elements. A bound editor drops `role="main"` (`landmark: false`), since a field is not a page landmark; the same `landmark`, `placeholder`, `id`, `ariaLabel` and `ariaLabelledBy` options exist on `createMikeDownEditor`.
65
+
66
+ ## Host interface
67
+
68
+ `options.host` is a `MikeDownHost`. Only `onChange` is required. Every other method is optional, and leaving one out turns its feature off and hides its UI. `NoopHost` is a ready-made host with just `onChange`.
69
+
70
+ | Method | Without it |
71
+ | --- | --- |
72
+ | `onChange(markdown, { pristine })` | required |
73
+ | `onStats` | no status statistics |
74
+ | `openLink` | external links open in a new tab, relative links are ignored |
75
+ | `saveSettings` | Settings modal changes last for the session |
76
+ | `toggleTheme` | the editor flips its own theme |
77
+ | `openKeybindings` | Hotkeys tab button hidden |
78
+ | `uploadImage` | image paste and drop disabled |
79
+ | `pickImage` | `/image` hidden |
80
+ | `resizeImage` | image resize items hidden |
81
+ | `resolveImageSrc` | relative or absolute image paths show the missing-image placeholder with the raw path |
82
+ | `getLinkSuggestions`, `getFileHeadings` | link and `[[` wikilink autocomplete off |
83
+ | `resolveWikilinks`, `createWikilink`, `checkLinks` | wikilinks and broken-link marking off |
84
+ | `getTags`, `openTag` | tag autocomplete and sidebar tags off |
85
+ | `getDiffBaseline` | diff button hidden |
86
+ | `onHeadingRenamed`, `onHeadingRenameAmbiguous` | no rename callbacks |
87
+ | `exportHtml`, `printDocument`, `viewInBrowser` | export buttons hidden |
88
+ | `sidebarPrefs` | sidebar keeps in-memory defaults |
89
+
90
+ Request and response methods return Promises. For example `uploadImage(file)` receives `{ mime, bytes, name }` and resolves `{ src, alt }`.
91
+
92
+ The returned `MikeDownEditorHandle` takes pushes from the host: `setMarkdown`, `markSaved`, `updateSettings`, `setReadOnly`, `setTags`, `setBacklinks`, `setDocMeta`, `scrollToAnchor`, `getHtml`, `command(name)` and more. `handle.on('ready' | ...)` subscribes to events. All types are exported from the package root.
93
+
94
+ ## Features
95
+
96
+ Switch UI blocks with `options.features`. Defaults shown.
97
+
98
+ | Feature | Default | Notes |
99
+ | --- | --- | --- |
100
+ | `toolbar` | on | Formatting toolbar |
101
+ | `sidebar` | off | Properties, Outline, Backlinks and Tags |
102
+ | `sourceMode` | on | CodeMirror view, `Cmd/Ctrl+/` |
103
+ | `slashCommands` | on | `/` menu |
104
+ | `spellcheck` | on | Inert unless `spellcheckDictionaryUrl` is set |
105
+ | `math` | on | KaTeX, `$...$` and `$$...$$` |
106
+ | `mermaid` | on | Renders `mermaid` fenced blocks |
107
+ | `findReplace` | on | `Cmd/Ctrl+F` and `Cmd/Ctrl+H` |
108
+ | `frontmatter` | on | Collapsible YAML block |
109
+ | `supportCard` | off | VS Code only |
110
+
111
+ Also built in: tables, task lists, GFM callouts (`> [!NOTE]`), `==highlight==`, footnotes, emoji, wikilinks, code blocks with language picker.
112
+
113
+ ## Theming
114
+
115
+ Colors, fonts and radii come only from `--mikedown-*` custom properties, with light and dark defaults in `@mikedown/core/tokens.css` (already included in `styles.css`). Every selector is scoped under `.mikedown-root` and `.mikedown-portal`, so the stylesheet cannot restyle your page. Set `theme: 'light' | 'dark' | 'auto'` or call `handle.setTheme()`.
116
+
117
+ To re-theme, set tokens on `.mikedown-root` (light) and `.mikedown-root[data-mikedown-theme="dark"]`. Menus and dialogs live in a `.mikedown-portal` element on `<body>`, so set the same tokens there. The full token list is in `src/styles/tokens.md` in the repository.
118
+
119
+ Menus and dialogs share one portal that mirrors the theme of the most recently focused editor. Two editors on one page with different themes can therefore show overlays in the other editor's theme. Mermaid's theme is initialised once globally for the same reason. Pages that toggle all editors together (as the demo does) are unaffected.
120
+
121
+ ## Spell check dictionaries
122
+
123
+ The package ships Hunspell dictionaries in `dist/dictionaries/` (`en/` and `en-GB/`, each with `index.aff`, `index.dic` and a license). Copy that folder to somewhere your app serves, then point the editor at it:
124
+
125
+ ```ts
126
+ createMikeDownEditor(el, { host, spellcheckDictionaryUrl: '/assets/mikedown-dictionaries' });
127
+ ```
128
+
129
+ Without `spellcheckDictionaryUrl`, spell check stays off and nothing is fetched. In an Angular app, add `{ "glob": "**/*", "input": "node_modules/@mikedown/core/dist/dictionaries", "output": "assets/mikedown-dictionaries" }` to the `assets` array in `angular.json`.
130
+
131
+ ## Shortcuts
132
+
133
+ The core binds `Mod-/` (Cmd on macOS, Ctrl elsewhere) to the source toggle in both the rich editor and source mode. A host that binds the shortcut itself, such as the VS Code keybinding, passes `hostOwnsShortcuts: true` so one keystroke never toggles twice.
134
+
135
+ ## Peer dependencies
136
+
137
+ The app must have exactly one copy of ProseMirror and CodeMirror, so these are peers.
138
+
139
+ | Peer | Range |
140
+ | --- | --- |
141
+ | `@tiptap/core`, `@tiptap/pm`, `@tiptap/starter-kit` and the extension packages (code-block-lowlight, hard-break, highlight, image, link, placeholder, table, table-cell, table-header, table-row, task-item, task-list, text) | `^3.20.0` (highlight `^3.23.5`) |
142
+ | `@codemirror/state` | `^6.5.2` |
143
+ | `@codemirror/view` | `^6.36.4` |
144
+ | `@codemirror/commands` | `^6.8.0` |
145
+ | `@codemirror/language` | `^6.10.8` |
146
+ | `@codemirror/lang-markdown` | `^6.3.2` |
147
+ | `@codemirror/theme-one-dark` | `^6.1.2` |
148
+ | `lowlight` | `^3.3.0` |
149
+ | `mermaid` (optional) | `^11.15.0` |
150
+ | `katex` | `^0.16.47` |
151
+
152
+ `tiptap-markdown`, `markdown-it-emoji`, `markdown-it-footnote`, `markdown-it-mark` and `nspell` are regular dependencies and install with the package.
153
+
154
+ `katex` is a required peer because `styles.css` imports its stylesheet. `mermaid` is optional. Both are loaded with dynamic `import()` the first time a diagram or formula appears, so they stay out of your initial bundle. Without `mermaid` the diagram block shows an error or the raw source. Install it anyway for Angular and Next.js (Turbopack) builds, which resolve the `import('mermaid')` at build time and fail without it; Vite builds pass.
155
+
156
+ ## Bundler notes
157
+
158
+ - **tiptap-markdown** is not bundled. Its `exports` map sends ESM consumers to the ES build, which Angular's builders, Vite and webpack 5 all honour. If your bundler resolves its UMD `main` file, add an alias to `tiptap-markdown/dist/tiptap-markdown.es.js` or put `module` first in `resolve.mainFields`.
159
+ - **KaTeX CSS.** `styles.css` begins with `@import 'katex/dist/katex.min.css'`, which Vite, webpack `css-loader` and the Angular application builder resolve from `node_modules`. If your toolchain does not, add `node_modules/katex/dist/katex.min.css` to your global styles (in Angular, the `styles` array in `angular.json`) and the import becomes harmless.
160
+ - **Old Angular CLI (14).** `exports` is ignored under `moduleResolution: node`, which is why `types` and `module` are set at the top level. Add `node_modules/@mikedown/core/dist/styles.css` to `angular.json` `styles` instead of importing it from Sass. Use `skipLibCheck: true`.
161
+ - **Types.** The published `.d.ts` references no `mermaid`, `katex` or `nspell` types.
162
+
163
+ ## Content Security Policy (Mermaid)
164
+
165
+ Mermaid renders SVG with `securityLevel: 'strict'` and loads its diagram types by dynamic `import()`. Your CSP needs `script-src 'self'` (or wherever your chunks are served from) and must allow inline styles for the SVG output (`style-src 'unsafe-inline'`, or a nonce on the style elements your bundler injects). A page that cannot allow this should set `features: { mermaid: false }`. KaTeX needs no script or eval permissions, only its stylesheet and fonts.
166
+
167
+ ## Framework wrappers
168
+
169
+ - [`@mikedown/web-component`](https://www.npmjs.com/package/@mikedown/web-component): `<mikedown-editor>`, a form-associated custom element for plain HTML, CDN pages and server-rendered templates.
170
+ - [`@mikedown/react`](https://www.npmjs.com/package/@mikedown/react): `MikeDownEditor` for React 18 and 19.
171
+ - [`@mikedown/vue`](https://www.npmjs.com/package/@mikedown/vue): `MikeDownEditor` with `v-model` for Vue 3.3+.
172
+ - [`@mikedown/angular`](https://www.npmjs.com/package/@mikedown/angular): a form control for Angular 17+.
173
+
174
+ Each wrapper depends only on core and its framework. Yarn does not install peers, so list core's:
175
+
176
+ ```bash
177
+ yarn add @mikedown/core @codemirror/commands @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/theme-one-dark @codemirror/view @tiptap/core @tiptap/extension-code-block-lowlight @tiptap/extension-hard-break @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-link @tiptap/extension-placeholder @tiptap/extension-table @tiptap/extension-table-cell @tiptap/extension-table-header @tiptap/extension-table-row @tiptap/extension-task-item @tiptap/extension-task-list @tiptap/extension-text @tiptap/pm @tiptap/starter-kit katex lowlight mermaid
178
+ ```
179
+
180
+ ## Testing
181
+
182
+ Use vitest with jsdom, stubbing `Range.prototype.getBoundingClientRect` and `getClientRects`. Jest: add `transformIgnorePatterns: ['/node_modules/(?!(@mikedown|lowlight|devlop)/)']` so the ESM-only packages in core's import graph get transformed (TipTap, CodeMirror and `tiptap-markdown` ship `require` builds). vitest is the recommended runner.
183
+
184
+ ## Demo
185
+
186
+ From a clone of the repository:
187
+
188
+ ```bash
189
+ npm run demo:core
190
+ ```
191
+
192
+ This builds the package and serves `packages/core/demo/` with two editors side by side, a theme toggle, a "Log markdown" button and an `uploadImage` stub that returns an object URL.
193
+
194
+ ## Browser support
195
+
196
+ Current Chrome, Edge, Firefox and Safari (ES2020 output, ESM only).
197
+
198
+ ## Privacy
199
+
200
+ No telemetry. The editor makes no network calls except the ones you configure: spell check dictionaries (when `spellcheckDictionaryUrl` is set), your `host` callbacks, and the lazy `import()` of KaTeX and Mermaid from your own bundle.
201
+
202
+ ## Links
203
+
204
+ - [Developers hub](https://www.iadev.net/mikedown/developers/)
205
+ - [npm](https://www.npmjs.com/package/@mikedown/core)
206
+ - [GitHub](https://github.com/mikejoseph23/mikedown/tree/main/packages/core)
207
+
208
+ ## Build
209
+
210
+ ```bash
211
+ npm run build -w packages/core
212
+ ```
213
+
214
+ Produces `dist/index.js` (ESM), `dist/index.d.ts`, `dist/styles.css`, `dist/tokens.css` and `dist/dictionaries/`.
215
+
216
+ ## License
217
+
218
+ MIT
@@ -0,0 +1,347 @@
1
+ en_US Hunspell Dictionary
2
+ Version 2020.12.07
3
+ Mon Dec 7 20:14:35 2020 -0500 [5ef55f9]
4
+ http://wordlist.sourceforge.net
5
+
6
+ README file for English Hunspell dictionaries derived from SCOWL.
7
+
8
+ These dictionaries are created using the speller/make-hunspell-dict
9
+ script in SCOWL.
10
+
11
+ The following dictionaries are available:
12
+
13
+ en_US (American)
14
+ en_CA (Canadian)
15
+ en_GB-ise (British with "ise" spelling)
16
+ en_GB-ize (British with "ize" spelling)
17
+ en_AU (Australian)
18
+
19
+ en_US-large
20
+ en_CA-large
21
+ en_GB-large (with both "ise" and "ize" spelling)
22
+ en_AU-large
23
+
24
+ The normal (non-large) dictionaries correspond to SCOWL size 60 and,
25
+ to encourage consistent spelling, generally only include one spelling
26
+ variant for a word. The large dictionaries correspond to SCOWL size
27
+ 70 and may include multiple spelling for a word when both variants are
28
+ considered almost equal. The larger dictionaries however (1) have not
29
+ been as carefully checked for errors as the normal dictionaries and
30
+ thus may contain misspelled or invalid words; and (2) contain
31
+ uncommon, yet valid, words that might cause problems as they are
32
+ likely to be misspellings of more common words (for example, "ort" and
33
+ "calender").
34
+
35
+ To get an idea of the difference in size, here are 25 random words
36
+ only found in the large dictionary for American English:
37
+
38
+ Bermejo Freyr's Guenevere Hatshepsut Nottinghamshire arrestment
39
+ crassitudes crural dogwatches errorless fetial flaxseeds godroon
40
+ incretion jalapeño's kelpie kishkes neuroglias pietisms pullulation
41
+ stemwinder stenoses syce thalassic zees
42
+
43
+ The en_US, en_CA and en_AU are the official dictionaries for Hunspell.
44
+ The en_GB and large dictionaries are made available on an experimental
45
+ basis. If you find them useful please send me a quick email at
46
+ kevina@gnu.org.
47
+
48
+ If none of these dictionaries suite you (for example, maybe you want
49
+ the normal dictionary that also includes common variants) additional
50
+ dictionaries can be generated at http://app.aspell.net/create or by
51
+ modifying speller/make-hunspell-dict in SCOWL. Please do let me know
52
+ if you end up publishing a customized dictionary.
53
+
54
+ If a word is not found in the dictionary or a word is there you think
55
+ shouldn't be, you can lookup the word up at http://app.aspell.net/lookup
56
+ to help determine why that is.
57
+
58
+ General comments on these list can be sent directly to me at
59
+ kevina@gnu.org or to the wordlist-devel mailing lists
60
+ (https://lists.sourceforge.net/lists/listinfo/wordlist-devel). If you
61
+ have specific issues with any of these dictionaries please file a bug
62
+ report at https://github.com/kevina/wordlist/issues.
63
+
64
+ IMPORTANT CHANGES INTRODUCED In 2016.11.20:
65
+
66
+ New Australian dictionaries thanks to the work of Benjamin Titze
67
+ (btitze@protonmail.ch).
68
+
69
+ IMPORTANT CHANGES INTRODUCED IN 2016.04.24:
70
+
71
+ The dictionaries are now in UTF-8 format instead of ISO-8859-1. This
72
+ was required to handle smart quotes correctly.
73
+
74
+ IMPORTANT CHANGES INTRODUCED IN 2016.01.19:
75
+
76
+ "SET UTF8" was changes to "SET UTF-8" in the affix file as some
77
+ versions of Hunspell do not recognize "UTF8".
78
+
79
+ ADDITIONAL NOTES:
80
+
81
+ The NOSUGGEST flag was added to certain taboo words. While I made an
82
+ honest attempt to flag the strongest taboo words with the NOSUGGEST
83
+ flag, I MAKE NO GUARANTEE THAT I FLAGGED EVERY POSSIBLE TABOO WORD.
84
+ The list was originally derived from Németh László, however I removed
85
+ some words which, while being considered taboo by some dictionaries,
86
+ are not really considered swear words in today's society.
87
+
88
+ COPYRIGHT, SOURCES, and CREDITS:
89
+
90
+ The English dictionaries come directly from SCOWL
91
+ and is thus under the same copyright of SCOWL. The affix file is
92
+ a heavily modified version of the original english.aff file which was
93
+ released as part of Geoff Kuenning's Ispell and as such is covered by
94
+ his BSD license. Part of SCOWL is also based on Ispell thus the
95
+ Ispell copyright is included with the SCOWL copyright.
96
+
97
+ The collective work is Copyright 2000-2018 by Kevin Atkinson as well
98
+ as any of the copyrights mentioned below:
99
+
100
+ Copyright 2000-2018 by Kevin Atkinson
101
+
102
+ Permission to use, copy, modify, distribute and sell these word
103
+ lists, the associated scripts, the output created from the scripts,
104
+ and its documentation for any purpose is hereby granted without fee,
105
+ provided that the above copyright notice appears in all copies and
106
+ that both that copyright notice and this permission notice appear in
107
+ supporting documentation. Kevin Atkinson makes no representations
108
+ about the suitability of this array for any purpose. It is provided
109
+ "as is" without express or implied warranty.
110
+
111
+ Alan Beale <biljir@pobox.com> also deserves special credit as he has,
112
+ in addition to providing the 12Dicts package and being a major
113
+ contributor to the ENABLE word list, given me an incredible amount of
114
+ feedback and created a number of special lists (those found in the
115
+ Supplement) in order to help improve the overall quality of SCOWL.
116
+
117
+ The 10 level includes the 1000 most common English words (according to
118
+ the Moby (TM) Words II [MWords] package), a subset of the 1000 most
119
+ common words on the Internet (again, according to Moby Words II), and
120
+ frequently class 16 from Brian Kelk's "UK English Wordlist
121
+ with Frequency Classification".
122
+
123
+ The MWords package was explicitly placed in the public domain:
124
+
125
+ The Moby lexicon project is complete and has
126
+ been place into the public domain. Use, sell,
127
+ rework, excerpt and use in any way on any platform.
128
+
129
+ Placing this material on internal or public servers is
130
+ also encouraged. The compiler is not aware of any
131
+ export restrictions so freely distribute world-wide.
132
+
133
+ You can verify the public domain status by contacting
134
+
135
+ Grady Ward
136
+ 3449 Martha Ct.
137
+ Arcata, CA 95521-4884
138
+
139
+ grady@netcom.com
140
+ grady@northcoast.com
141
+
142
+ The "UK English Wordlist With Frequency Classification" is also in the
143
+ Public Domain:
144
+
145
+ Date: Sat, 08 Jul 2000 20:27:21 +0100
146
+ From: Brian Kelk <Brian.Kelk@cl.cam.ac.uk>
147
+
148
+ > I was wondering what the copyright status of your "UK English
149
+ > Wordlist With Frequency Classification" word list as it seems to
150
+ > be lacking any copyright notice.
151
+
152
+ There were many many sources in total, but any text marked
153
+ "copyright" was avoided. Locally-written documentation was one
154
+ source. An earlier version of the list resided in a filespace called
155
+ PUBLIC on the University mainframe, because it was considered public
156
+ domain.
157
+
158
+ Date: Tue, 11 Jul 2000 19:31:34 +0100
159
+
160
+ > So are you saying your word list is also in the public domain?
161
+
162
+ That is the intention.
163
+
164
+ The 20 level includes frequency classes 7-15 from Brian's word list.
165
+
166
+ The 35 level includes frequency classes 2-6 and words appearing in at
167
+ least 11 of 12 dictionaries as indicated in the 12Dicts package. All
168
+ words from the 12Dicts package have had likely inflections added via
169
+ my inflection database.
170
+
171
+ The 12Dicts package and Supplement is in the Public Domain.
172
+
173
+ The WordNet database, which was used in the creation of the
174
+ Inflections database, is under the following copyright:
175
+
176
+ This software and database is being provided to you, the LICENSEE,
177
+ by Princeton University under the following license. By obtaining,
178
+ using and/or copying this software and database, you agree that you
179
+ have read, understood, and will comply with these terms and
180
+ conditions.:
181
+
182
+ Permission to use, copy, modify and distribute this software and
183
+ database and its documentation for any purpose and without fee or
184
+ royalty is hereby granted, provided that you agree to comply with
185
+ the following copyright notice and statements, including the
186
+ disclaimer, and that the same appear on ALL copies of the software,
187
+ database and documentation, including modifications that you make
188
+ for internal use or for distribution.
189
+
190
+ WordNet 1.6 Copyright 1997 by Princeton University. All rights
191
+ reserved.
192
+
193
+ THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON
194
+ UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
195
+ IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON
196
+ UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT-
197
+ ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE
198
+ LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT INFRINGE ANY
199
+ THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
200
+
201
+ The name of Princeton University or Princeton may not be used in
202
+ advertising or publicity pertaining to distribution of the software
203
+ and/or database. Title to copyright in this software, database and
204
+ any associated documentation shall at all times remain with
205
+ Princeton University and LICENSEE agrees to preserve same.
206
+
207
+ The 40 level includes words from Alan's 3esl list found in version 4.0
208
+ of his 12dicts package. Like his other stuff the 3esl list is also in the
209
+ public domain.
210
+
211
+ The 50 level includes Brian's frequency class 1, words appearing
212
+ in at least 5 of 12 of the dictionaries as indicated in the 12Dicts
213
+ package, and uppercase words in at least 4 of the previous 12
214
+ dictionaries. A decent number of proper names is also included: The
215
+ top 1000 male, female, and Last names from the 1990 Census report; a
216
+ list of names sent to me by Alan Beale; and a few names that I added
217
+ myself. Finally a small list of abbreviations not commonly found in
218
+ other word lists is included.
219
+
220
+ The name files form the Census report is a government document which I
221
+ don't think can be copyrighted.
222
+
223
+ The file special-jargon.50 uses common.lst and word.lst from the
224
+ "Unofficial Jargon File Word Lists" which is derived from "The Jargon
225
+ File". All of which is in the Public Domain. This file also contain
226
+ a few extra UNIX terms which are found in the file "unix-terms" in the
227
+ special/ directory.
228
+
229
+ The 55 level includes words from Alan's 2of4brif list found in version
230
+ 4.0 of his 12dicts package. Like his other stuff the 2of4brif is also
231
+ in the public domain.
232
+
233
+ The 60 level includes all words appearing in at least 2 of the 12
234
+ dictionaries as indicated by the 12Dicts package.
235
+
236
+ The 70 level includes Brian's frequency class 0 and the 74,550 common
237
+ dictionary words from the MWords package. The common dictionary words,
238
+ like those from the 12Dicts package, have had all likely inflections
239
+ added. The 70 level also included the 5desk list from version 4.0 of
240
+ the 12Dics package which is in the public domain.
241
+
242
+ The 80 level includes the ENABLE word list, all the lists in the
243
+ ENABLE supplement package (except for ABLE), the "UK Advanced Cryptics
244
+ Dictionary" (UKACD), the list of signature words from the YAWL package,
245
+ and the 10,196 places list from the MWords package.
246
+
247
+ The ENABLE package, mainted by M\Cooper <thegrendel@theriver.com>,
248
+ is in the Public Domain:
249
+
250
+ The ENABLE master word list, WORD.LST, is herewith formally released
251
+ into the Public Domain. Anyone is free to use it or distribute it in
252
+ any manner they see fit. No fee or registration is required for its
253
+ use nor are "contributions" solicited (if you feel you absolutely
254
+ must contribute something for your own peace of mind, the authors of
255
+ the ENABLE list ask that you make a donation on their behalf to your
256
+ favorite charity). This word list is our gift to the Scrabble
257
+ community, as an alternate to "official" word lists. Game designers
258
+ may feel free to incorporate the WORD.LST into their games. Please
259
+ mention the source and credit us as originators of the list. Note
260
+ that if you, as a game designer, use the WORD.LST in your product,
261
+ you may still copyright and protect your product, but you may *not*
262
+ legally copyright or in any way restrict redistribution of the
263
+ WORD.LST portion of your product. This *may* under law restrict your
264
+ rights to restrict your users' rights, but that is only fair.
265
+
266
+ UKACD, by J Ross Beresford <ross@bryson.demon.co.uk>, is under the
267
+ following copyright:
268
+
269
+ Copyright (c) J Ross Beresford 1993-1999. All Rights Reserved.
270
+
271
+ The following restriction is placed on the use of this publication:
272
+ if The UK Advanced Cryptics Dictionary is used in a software package
273
+ or redistributed in any form, the copyright notice must be
274
+ prominently displayed and the text of this document must be included
275
+ verbatim.
276
+
277
+ There are no other restrictions: I would like to see the list
278
+ distributed as widely as possible.
279
+
280
+ The 95 level includes the 354,984 single words, 256,772 compound
281
+ words, 4,946 female names and the 3,897 male names, and 21,986 names
282
+ from the MWords package, ABLE.LST from the ENABLE Supplement, and some
283
+ additional words found in my part-of-speech database that were not
284
+ found anywhere else.
285
+
286
+ Accent information was taken from UKACD.
287
+
288
+ The VarCon package was used to create the American, British, Canadian,
289
+ and Australian word list. It is under the following copyright:
290
+
291
+ Copyright 2000-2016 by Kevin Atkinson
292
+
293
+ Permission to use, copy, modify, distribute and sell this array, the
294
+ associated software, and its documentation for any purpose is hereby
295
+ granted without fee, provided that the above copyright notice appears
296
+ in all copies and that both that copyright notice and this permission
297
+ notice appear in supporting documentation. Kevin Atkinson makes no
298
+ representations about the suitability of this array for any
299
+ purpose. It is provided "as is" without express or implied warranty.
300
+
301
+ Copyright 2016 by Benjamin Titze
302
+
303
+ Permission to use, copy, modify, distribute and sell this array, the
304
+ associated software, and its documentation for any purpose is hereby
305
+ granted without fee, provided that the above copyright notice appears
306
+ in all copies and that both that copyright notice and this permission
307
+ notice appear in supporting documentation. Benjamin Titze makes no
308
+ representations about the suitability of this array for any
309
+ purpose. It is provided "as is" without express or implied warranty.
310
+
311
+ Since the original words lists come from the Ispell distribution:
312
+
313
+ Copyright 1993, Geoff Kuenning, Granada Hills, CA
314
+ All rights reserved.
315
+
316
+ Redistribution and use in source and binary forms, with or without
317
+ modification, are permitted provided that the following conditions
318
+ are met:
319
+
320
+ 1. Redistributions of source code must retain the above copyright
321
+ notice, this list of conditions and the following disclaimer.
322
+ 2. Redistributions in binary form must reproduce the above copyright
323
+ notice, this list of conditions and the following disclaimer in the
324
+ documentation and/or other materials provided with the distribution.
325
+ 3. All modifications to the source code must be clearly marked as
326
+ such. Binary redistributions based on modified source code
327
+ must be clearly marked as modified versions in the documentation
328
+ and/or other materials provided with the distribution.
329
+ (clause 4 removed with permission from Geoff Kuenning)
330
+ 5. The name of Geoff Kuenning may not be used to endorse or promote
331
+ products derived from this software without specific prior
332
+ written permission.
333
+
334
+ THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
335
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
336
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
337
+ ARE DISCLAIMED. IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
338
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
339
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
340
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
341
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
342
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
343
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
344
+ SUCH DAMAGE.
345
+
346
+ Build Date: Mon Dec 7 20:19:27 EST 2020
347
+ Wordlist Command: mk-list --accents=strip en_US 60