mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-02-21 07:32:24 +01:00
This PR adds better TypeScript types into Slate and is based on the proposal here: https://github.com/ianstormtaylor/slate/issues/3725 * Extend Slate's types like Element and Text * Supports type discrimination (ie. if an element has type === "table" then we get a reduced set of properties) * added custom types * files * more extensions * files * changed fixtures * changes eslint file * changed element.children to descendant * updated types * more type changes * changed a lot of typing, still getting building errors * extended text type in slate-react * removed type assertions * Clean up of custom types and a couple uneeded comments. * Rename headingElement-true.tsx.tsx to headingElement-true.tsx * moved basetext and baselement * Update packages/slate/src/interfaces/text.ts Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com> * Fix some type issues with core functions. * Clean up text and element files. * Convert other types to extended types. * Change the type of editor.marks to the appropriate type. * Add version 100.0.0 to package.json * Revert "Add version 100.0.0 to package.json" This reverts commit 329e44e43d968700655b1c46f968bfd3147e7339. * added custom types * files * more extensions * files * changed fixtures * changes eslint file * changed element.children to descendant * updated types * more type changes * changed a lot of typing, still getting building errors * extended text type in slate-react * removed type assertions * Clean up of custom types and a couple uneeded comments. * Rename headingElement-true.tsx.tsx to headingElement-true.tsx * moved basetext and baselement * Update packages/slate/src/interfaces/text.ts Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com> * Fix some type issues with core functions. * Clean up text and element files. * Convert other types to extended types. * Change the type of editor.marks to the appropriate type. * Run linter. * Remove key:string uknown from the base types. * Clean up types after removing key:string unknown. * Lint and prettier fixes. * Implement custom-types Co-authored-by: mdmjg <mdj308@nyu.edu> * added custom types to examples * reset yarn lock * added ts to fixtures * examples custom types * Working fix * ts-thesunny-try * Extract interface types. * Fix minor return type in create-editor. * Fix the typing issue with Location having compile time CustomTypes * Extract types for Transforms. * Update README. * Fix dependency on slate-history in slate-react Co-authored-by: mdmjg <mdj308@nyu.edu> Co-authored-by: Brent Farese <brentfarese@gmail.com> Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com> Co-authored-by: Tim Buckley <timothypbuckley@gmail.com>
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
import fs from 'fs'
|
|
import { basename, extname, resolve } from 'path'
|
|
|
|
export const fixtures = (...args) => {
|
|
let fn = args.pop()
|
|
let options = { skip: false }
|
|
|
|
if (typeof fn !== 'function') {
|
|
options = fn
|
|
fn = args.pop()
|
|
}
|
|
|
|
const path = resolve(...args)
|
|
const files = fs.readdirSync(path)
|
|
const dir = basename(path)
|
|
const d = options.skip ? describe.skip : describe
|
|
|
|
d(dir, () => {
|
|
for (const file of files) {
|
|
const p = resolve(path, file)
|
|
const stat = fs.statSync(p)
|
|
|
|
if (stat.isDirectory()) {
|
|
fixtures(path, file, fn)
|
|
}
|
|
if (
|
|
stat.isFile() &&
|
|
(file.endsWith('.js') ||
|
|
file.endsWith('.tsx') ||
|
|
file.endsWith('.ts')) &&
|
|
!file.endsWith('custom-types.ts') &&
|
|
!file.endsWith('type-guards.ts') &&
|
|
!file.startsWith('.') &&
|
|
// Ignoring `index.js` files allows us to use the fixtures directly
|
|
// from the top-level directory itself, instead of only children.
|
|
file !== 'index.js'
|
|
) {
|
|
const name = basename(file, extname(file))
|
|
|
|
// This needs to be a non-arrow function to use `this.skip()`.
|
|
it(`${name} `, function() {
|
|
const module = require(p)
|
|
|
|
if (module.skip) {
|
|
this.skip()
|
|
return
|
|
}
|
|
|
|
fn({ name, path, module })
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
fixtures.skip = (...args) => {
|
|
fixtures(...args, { skip: true })
|
|
}
|