-
-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Use relative paths in exports field (#168)
* test(ci): Run with active node versions * fix: avoid duplicate artifacts by specifying node version * test: Smoke test for unflagged es modules in node * Remove core-js dependency there's no set/array-from polyfill written with ES6 modules * fix: resolve node_version to value * like so? * fix working directory * fix: use correct relative imports in .mjs files * Enable fallback * Create serious-tables-deny.md
- Loading branch information
Showing
11 changed files
with
245 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
"dom-accessibility-api": patch | ||
--- | ||
|
||
fix: Use relative paths in exports field | ||
|
||
Fixes a crash when using ES modules in Node. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
declare global { | ||
class Set<T> { | ||
// es2015.collection.d.ts | ||
add(value: T): this; | ||
clear(): void; | ||
delete(value: T): boolean; | ||
forEach( | ||
callbackfn: (value: T, value2: T, set: Set<T>) => void, | ||
thisArg?: any | ||
): void; | ||
has(value: T): boolean; | ||
readonly size: number; | ||
|
||
// es2015.iterable.d.ts | ||
// no implemennted | ||
} | ||
} | ||
|
||
// for environments without Set we fallback to arrays with unique members | ||
class SetLike<T> extends Set<T> { | ||
private items: T[] = []; | ||
|
||
add(value: T): this { | ||
if (this.has(value) === false) { | ||
this.items.push(value); | ||
} | ||
return this; | ||
} | ||
clear(): void { | ||
this.items = []; | ||
} | ||
delete(value: T): boolean { | ||
const previousLength = this.items.length; | ||
this.items = this.items.filter((item) => item !== value); | ||
|
||
return previousLength !== this.items.length; | ||
} | ||
forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void): void { | ||
this.items.forEach((item) => { | ||
callbackfn(item, item, this); | ||
}); | ||
} | ||
has(value: T): boolean { | ||
return this.items.indexOf(value) !== -1; | ||
} | ||
|
||
get size(): number { | ||
return this.items.length; | ||
} | ||
} | ||
|
||
export default typeof Set === "undefined" ? Set : SetLike; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
/** | ||
* @source {https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Polyfill} | ||
* but without thisArg (too hard to type, no need to `this`) | ||
*/ | ||
const toStr = Object.prototype.toString; | ||
function isCallable(fn: unknown): boolean { | ||
return typeof fn === "function" || toStr.call(fn) === "[object Function]"; | ||
} | ||
function toInteger(value: unknown): number { | ||
const number = Number(value); | ||
if (isNaN(number)) { | ||
return 0; | ||
} | ||
if (number === 0 || !isFinite(number)) { | ||
return number; | ||
} | ||
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); | ||
} | ||
const maxSafeInteger = Math.pow(2, 53) - 1; | ||
function toLength(value: unknown): number { | ||
const len = toInteger(value); | ||
return Math.min(Math.max(len, 0), maxSafeInteger); | ||
} | ||
/** | ||
* Creates an array from an iterable object. | ||
* @param iterable An iterable object to convert to an array. | ||
*/ | ||
export default function arrayFrom<T>(iterable: Iterable<T> | ArrayLike<T>): T[]; | ||
/** | ||
* Creates an array from an iterable object. | ||
* @param iterable An iterable object to convert to an array. | ||
* @param mapfn A mapping function to call on every element of the array. | ||
* @param thisArg Value of 'this' used to invoke the mapfn. | ||
*/ | ||
export default function arrayFrom<T, U>( | ||
arrayLike: Iterable<T> | ArrayLike<T>, | ||
mapFn?: (v: T, k: number) => U | ||
): U[] { | ||
// 1. Let C be the this value. | ||
// edit(@eps1lon): we're not calling it as Array.from | ||
const C = Array; | ||
|
||
// 2. Let items be ToObject(arrayLike). | ||
const items = Object(arrayLike); | ||
|
||
// 3. ReturnIfAbrupt(items). | ||
if (arrayLike == null) { | ||
throw new TypeError( | ||
"Array.from requires an array-like object - not null or undefined" | ||
); | ||
} | ||
|
||
// 4. If mapfn is undefined, then let mapping be false. | ||
// const mapFn = arguments.length > 1 ? arguments[1] : void undefined; | ||
|
||
if (typeof mapFn !== "undefined") { | ||
// 5. else | ||
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception. | ||
if (!isCallable(mapFn)) { | ||
throw new TypeError( | ||
"Array.from: when provided, the second argument must be a function" | ||
); | ||
} | ||
} | ||
|
||
// 10. Let lenValue be Get(items, "length"). | ||
// 11. Let len be ToLength(lenValue). | ||
const len = toLength(items.length); | ||
|
||
// 13. If IsConstructor(C) is true, then | ||
// 13. a. Let A be the result of calling the [[Construct]] internal method | ||
// of C with an argument list containing the single item len. | ||
// 14. a. Else, Let A be ArrayCreate(len). | ||
const A = isCallable(C) ? Object(new C(len)) : new Array(len); | ||
|
||
// 16. Let k be 0. | ||
let k = 0; | ||
// 17. Repeat, while k < len… (also steps a - h) | ||
let kValue; | ||
while (k < len) { | ||
kValue = items[k]; | ||
if (mapFn) { | ||
A[k] = mapFn(kValue, k); | ||
} else { | ||
A[k] = kValue; | ||
} | ||
k += 1; | ||
} | ||
// 18. Let putStatus be Put(A, "length", len, true). | ||
A.length = len; | ||
// 20. Return A. | ||
return A; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# node-es-modules | ||
|
||
Smoke test for interaction between node and publishing dual-modules. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
import * as assert from "assert"; | ||
import { computeAccessibleName } from "dom-accessibility-api"; | ||
|
||
assert.strictEqual(typeof computeAccessibleName, "function"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"name": "build-fixture-node-es-modules", | ||
"private": true, | ||
"type": "module", | ||
"dependencies": { | ||
"dom-accessibility-api": "file:../../../../dom-accessibility-api.tgz" | ||
}, | ||
"scripts": { | ||
"start": "yarn install --no-lockfile && node index.js" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters