@gjsify/fs 0.0.1 → 0.0.2

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 (80) hide show
  1. package/README.md +6 -8
  2. package/lib/cjs/callback.js +131 -0
  3. package/lib/cjs/dirent.js +127 -0
  4. package/lib/cjs/encoding.js +53 -0
  5. package/lib/cjs/file-handle.js +473 -0
  6. package/lib/cjs/fs-watcher.js +79 -0
  7. package/lib/cjs/index.js +95 -0
  8. package/lib/cjs/promises.js +189 -0
  9. package/lib/cjs/read-stream.js +107 -0
  10. package/lib/cjs/stats.js +74 -0
  11. package/lib/cjs/sync.js +155 -0
  12. package/lib/cjs/types/encoding-option.js +15 -0
  13. package/lib/cjs/types/file-read-options.js +15 -0
  14. package/lib/cjs/types/file-read-result.js +15 -0
  15. package/lib/cjs/types/flag-and-open-mode.js +15 -0
  16. package/lib/cjs/types/index.js +22 -0
  17. package/lib/cjs/types/open-flags.js +15 -0
  18. package/lib/cjs/types/read-options.js +15 -0
  19. package/lib/cjs/utils.js +37 -0
  20. package/lib/cjs/write-stream.js +135 -0
  21. package/lib/esm/callback.js +112 -0
  22. package/lib/esm/dirent.js +98 -0
  23. package/lib/esm/encoding.js +34 -0
  24. package/lib/esm/file-handle.js +444 -0
  25. package/lib/esm/fs-watcher.js +50 -0
  26. package/lib/esm/index.js +95 -0
  27. package/lib/esm/promises.js +160 -0
  28. package/lib/esm/read-stream.js +78 -0
  29. package/lib/esm/stats.js +45 -0
  30. package/lib/esm/sync.js +126 -0
  31. package/lib/esm/types/encoding-option.js +0 -0
  32. package/lib/esm/types/file-read-options.js +0 -0
  33. package/lib/esm/types/file-read-result.js +0 -0
  34. package/lib/esm/types/flag-and-open-mode.js +0 -0
  35. package/lib/esm/types/index.js +6 -0
  36. package/lib/esm/types/open-flags.js +0 -0
  37. package/lib/esm/types/read-options.js +0 -0
  38. package/lib/esm/utils.js +18 -0
  39. package/lib/esm/write-stream.js +116 -0
  40. package/package.json +52 -17
  41. package/src/callback.spec.ts +42 -0
  42. package/src/callback.ts +362 -0
  43. package/src/dirent.ts +117 -0
  44. package/src/encoding.ts +40 -0
  45. package/src/file-handle.spec.ts +34 -0
  46. package/src/file-handle.ts +606 -0
  47. package/{fs-watcher.js → src/fs-watcher.ts} +10 -9
  48. package/src/index.ts +95 -0
  49. package/src/promises.spec.ts +172 -0
  50. package/src/promises.ts +349 -0
  51. package/src/read-stream.ts +98 -0
  52. package/src/stat.spec.ts +79 -0
  53. package/src/stats.ts +106 -0
  54. package/src/symlink.spec.ts +38 -0
  55. package/src/sync.spec.ts +205 -0
  56. package/src/sync.ts +239 -0
  57. package/src/test.mts +11 -0
  58. package/src/types/encoding-option.ts +3 -0
  59. package/src/types/file-read-options.ts +15 -0
  60. package/src/types/file-read-result.ts +4 -0
  61. package/src/types/flag-and-open-mode.ts +6 -0
  62. package/src/types/index.ts +6 -0
  63. package/src/types/open-flags.ts +14 -0
  64. package/src/types/read-options.ts +9 -0
  65. package/src/utils.ts +19 -0
  66. package/src/write-stream.ts +143 -0
  67. package/test/file.txt +1 -0
  68. package/test/watch.js +1 -0
  69. package/test.gjs.js +35359 -0
  70. package/test.gjs.js.map +7 -0
  71. package/test.gjs.mjs +40570 -0
  72. package/test.gjs.mjs.meta.json +1 -0
  73. package/test.node.js +1479 -0
  74. package/test.node.js.map +7 -0
  75. package/test.node.mjs +710 -0
  76. package/tsconfig.json +18 -0
  77. package/tsconfig.types.json +8 -0
  78. package/index.js +0 -114
  79. package/test/index.js +0 -90
  80. package/test/resources/file.txt +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../unit/src/index.ts", "src/callback.spec.ts", "src/file-handle.spec.ts", "src/promises.spec.ts", "src/sync.spec.ts", "src/test.ts"],
4
+ "sourcesContent": ["import type GLib from '@gjsify/types/GLib-2.0';\nimport { versions } from 'process';\n\nconst mainloop: GLib.MainLoop | undefined = (globalThis as any)?.imports?.mainloop;\n\n// This file is part of the gjsunit framework\n// Please visit https://github.com/philipphoffmann/gjsunit for more information\n\nvar countTestsOverall = 0;\nvar countTestsFailed = 0;\n\nexport interface Namespaces {\n\t[key: string]: () => (void | Promise<void>) | Namespaces;\n}\n\n// Makes this work on Gjs and Node.js\nexport const print = globalThis.print || console.log;\n\nclass MatcherFactory {\n\n\tpublic not?: MatcherFactory;\n\n\tconstructor(protected readonly actualValue: any, protected readonly positive: boolean, withOpposite = true) {\n\t\tif (withOpposite) {\n\t\t\tthis.not = new MatcherFactory(actualValue, !positive, false);\n\t\t}\n\t}\n\n\ttriggerResult(success: boolean, msg: string) {\n\t\tif( (success && !this.positive) ||\n\t\t\t(!success && this.positive) ) {\n\t\t\t++countTestsFailed;\n\t\t\tthrow new Error(msg);\n\t\t}\n\t}\n\n\tto(callback: (actualValue: any) => boolean) {\n\t\tthis.triggerResult(callback(this.actualValue),\n\t\t\t' Expected callback to validate'\n\t\t);\n\t}\n\n\ttoBe(expectedValue: any) {\n\t\tthis.triggerResult(this.actualValue === expectedValue,\n\t\t\t' Expected values to match using ===\\n' +\n\t\t\t' Expected: ' + expectedValue + '\\n' +\n\t\t\t' Actual: ' + this.actualValue\n\t\t);\n\t}\n\n\ttoEqual(expectedValue: any) {\n\t\tthis.triggerResult(this.actualValue == expectedValue,\n\t\t\t' Expected values to match using ==\\n' +\n\t\t\t' Expected: ' + expectedValue + '\\n' +\n\t\t\t' Actual: ' + this.actualValue\n\t\t);\n\t}\n\n\ttoMatch(expectedValue: any) {\n\t\tif(typeof this.actualValue.match !== 'function') {\n\t\t\tthrow new Error(`You can not use toMatch on type ${typeof this.actualValue}`);\n\t\t}\n\t\tthis.triggerResult(!!this.actualValue.match(expectedValue),\n\t\t\t' Expected values to match using regular expression\\n' +\n\t\t\t' Expression: ' + expectedValue + '\\n' +\n\t\t\t' Actual: ' + this.actualValue\n\t\t);\n\t}\n\n\ttoBeDefined() {\n\t\tthis.triggerResult(typeof this.actualValue !== 'undefined',\n\t\t\t' Expected value to be defined'\n\t\t);\n\t}\n\n\ttoBeUndefined() {\n\t\tthis.triggerResult(typeof this.actualValue === 'undefined',\n\t\t\t' Expected value to be undefined'\n\t\t);\n\t}\n\n\ttoBeNull() {\n\t\tthis.triggerResult(this.actualValue === null,\n\t\t\t' Expected value to be null'\n\t\t);\n\t}\n\n\ttoBeTruthy() {\n\t\tthis.triggerResult(this.actualValue as unknown as boolean,\n\t\t\t' Expected value to be truthy'\n\t\t);\n\t}\n\n\ttoBeFalsy() {\n\t\tthis.triggerResult(!this.actualValue,\n\t\t\t' Expected value to be falsy'\n\t\t);\n\t}\n\n\ttoContain(needle: any) {\n\t\tthis.triggerResult(this.actualValue instanceof Array && this.actualValue.indexOf(needle) !== -1,\n\t\t\t' Expected ' + this.actualValue + ' to contain ' + needle\n\t\t);\n\t}\n\ttoBeLessThan(greaterValue: number) {\n\t\tthis.triggerResult(this.actualValue < greaterValue,\n\t\t\t' Expected ' + this.actualValue + ' to be less than ' + greaterValue\n\t\t);\n\t}\n\ttoBeGreaterThan(smallerValue: number) {\n\t\tthis.triggerResult(this.actualValue > smallerValue,\n\t\t\t' Expected ' + this.actualValue + ' to be greater than ' + smallerValue\n\t\t);\n\t}\n\ttoBeCloseTo(expectedValue: number, precision: number) {\n\t\tvar shiftHelper = Math.pow(10, precision);\n\t\tthis.triggerResult(Math.round((this.actualValue as unknown as number) * shiftHelper) / shiftHelper === Math.round(expectedValue * shiftHelper) / shiftHelper,\n\t\t\t' Expected ' + this.actualValue + ' with precision ' + precision + ' to be close to ' + expectedValue\n\t\t);\n\t}\n\ttoThrow() {\n\t\tlet errorMessage = ''; \n\t\tvar didThrow = false;\n\t\ttry {\n\t\t\tthis.actualValue();\n\t\t\tdidThrow = false;\n\t\t}\n\t\tcatch(e) {\n\t\t\terrorMessage = e.message || '';\n\t\t\tdidThrow = true;\n\t\t}\n\t\tconst functionName = this.actualValue.name || typeof this.actualValue === 'function' ? \"[anonymous function]\" : this.actualValue.toString();\n\t\tthis.triggerResult(didThrow,\n\t\t\t` Expected ${functionName} to ${this.positive ? 'throw' : 'not throw'} an exception ${!this.positive && errorMessage ? `, but an error with the message \"${errorMessage}\" was thrown` : ''}`\n\t\t);\n\t}\n}\n\nexport const describe = async function(moduleName: string, callback: () => void | Promise<void>) {\n\tprint('\\n' + moduleName);\n\tawait callback();\n};\n\nexport const it = async function(expectation: string, callback: () => void | Promise<void>) {\n\ttry {\n\t\tawait callback();\n\t\tprint(' \\x1B[32m\u2714\\x1B[39m \\x1B[90m' + expectation + '\\x1B[39m');\n\t}\n\tcatch(e) {\n\t\tprint(' \\x1B[31m\u274C\\x1B[39m \\x1B[90m' + expectation + '\\x1B[39m');\n\t\tprint('\\x1B[31m' + e.message + '\\x1B[39m');\n\t\t// if (e.stack) print(e.stack);\n\t}\n}\n\nexport const expect = function(actualValue: any) {\n\t++countTestsOverall;\n\n\tvar expecter = new MatcherFactory(actualValue, true);\n\n\treturn expecter;\n}\n\nconst runTests = async function(namespaces: Namespaces) {\n\t// recursively check the test directory for executable tests\n\tfor( var subNamespace in namespaces ) {\n\t\tconst namespace = namespaces[subNamespace];\n\t\t// execute any test functions\n\t\tif(typeof namespace === 'function' ) {\n\t\t\tawait namespace();\n\t\t}\n\t\t// descend into subfolders and objects\n\t\telse if( typeof namespace === 'object' ) {\n\t\t\tawait runTests(namespace);\n\t\t}\n\t}\n}\n\nconst printResult = () => {\n\tif( countTestsFailed ) {\n\t\t// some tests failed\n\t\tprint('\\n\\x1B[31m\u274C ' + countTestsFailed + ' of ' + countTestsOverall + ' tests failed\\x1B[39m');\n\t}\n\telse {\n\t\t// all tests okay\n\t\tprint('\\n\\x1B[32m\u2714 ' + countTestsOverall + ' completed\\x1B[39m');\n\t}\n}\n\nconst printRuntime = () => {\n\tif (versions.gjs) {\n\t\tprint(`Running on Gjs ${versions.gjs}`);\n\t} else if(versions.node) {\n\t\tprint(`Running on Node.js ${versions.node}`);\n\t} else {\n\t\tprint(`Running on unknown runtime`);\n\t}\n\t\n}\n\nexport const run = function(namespaces: Namespaces) {\n\tprintRuntime();\n\trunTests(namespaces)\n\t.then(() => {\n\t\tprintResult();\n\t\tprint();\n\t\tmainloop?.quit();\n\t})\n\n // Run the GJS mainloop for async operations\n mainloop?.run();\n}\n", "import { describe, it, expect } from '@gjsify/unit';\nimport { open, write, close, rm } from 'fs';\n\nexport default () => {\n\tdescribe('fs.open', () => {\n\t\tit(`should open a file for writing`, () => {\n\t\t\tconst path = './test/open.txt';\n\t\t\topen(path, 'w+', 0o666, (err, fd) => {\n\n\t\t\t\texpect(err).toBeNull();\n\n\t\t\t\tconsole.log('fs.open: file open');\n\n\t\t\t\tlet buffWrite = Buffer.from('Hello World', 'utf8'),\n\t\t\t\tbuffStart = 0,\n\t\t\t\tbuffLength = buffWrite.length,\n\t\t\t\tfilePos = 0;\n\t\t\t\twrite(fd, buffWrite, buffStart, buffLength, filePos, (err, written, buffer) => {\n\t\t\t\t\texpect(err).toBeNull();\n\n\t\t\t\t\tconsole.log('fs.open: file written');\n\n\t\t\t\t\texpect(written).toBe(buffWrite.length);\n\n\t\t\t\t\texpect(buffer).toBe(buffWrite);\n\n\t\t\t\t\tclose(fd, (err) => {\n\t\t\t\t\t\texpect(err).toBeNull();\n\n\t\t\t\t\t\tconsole.log('fs.open: file closed');\n\n\t\t\t\t\t\trm(path, (err) => {\n\t\t\t\t\t\t\texpect(err).toBeNull();\n\t\t\t\t\t\t\tconsole.log('fs.open: file removed');\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t});\n}\n", "import { describe, it, expect } from '@gjsify/unit';\nimport { promises, rm } from 'fs';\n\nexport default async () => {\n\tawait describe('FileHandle', async () => {\n\t\tawait it(`should open a file for writing`, async () => {\n\t\t\tconst path = './test/openP.txt';\n\t\t\tconst fileHandle = await promises.open(path, 'w+', 0o666);\n\n\t\t\tconsole.log('FileHandle: file open');\n\n\t\t\tlet buffWrite = Buffer.from('Hello World', 'utf8'),\n\t\t\tbuffStart = 0,\n\t\t\tbuffLength = buffWrite.length,\n\t\t\tfilePos = 0;\n\t\t\tconst res = await fileHandle.write(buffWrite, buffStart, buffLength, filePos);\n\t\t\tconsole.log('FileHandle: file written');\n\n\t\t\t// console.log('written', res.bytesWritten);\n\n\t\t\texpect(res.bytesWritten).toBe(buffWrite.length);\n\n\t\t\texpect(res.buffer).toBe(buffWrite);\n\n\t\t\tawait fileHandle.close();\n\t\t\tconsole.log('FileHandle: file closed');\n\n\t\t\tawait promises.rm(path);\n\t\t\tconsole.log('FileHandle: file removed');\t\n\n\t\t});\n\t});\n}\n", "import { describe, it, expect } from '@gjsify/unit';\nimport { promises, existsSync } from 'fs';\nimport { mkdir } from 'fs/promises';\nimport { join } from 'path';\n\nexport default async () => {\n\n\tawait describe('fs/promises', async () => {\n\t\tawait it('import over \"fs/should\" should be work', async () => {\n\t\t\texpect(typeof mkdir).toBe(\"function\");\n\t\t});\n\t});\n\n\tawait describe('fs.promises.readFile', async () => {\n\n\t\tawait it('should be a function', async () => {\n\t\t\texpect(typeof promises.readFile).toBe(\"function\");\n\t\t});\n\n\t\tawait it('should be a promise', async () => {\n\t\t\texpect(promises.readFile('./test/file.txt', 'utf-8') instanceof Promise).toBeTruthy();\n\t\t});\n\n\t\tawait it('should return a Buffer if no encoding was specified', async () => {\n\t\t\tconst bufferData = await promises.readFile('package.json');\n\t\t\texpect(bufferData instanceof Buffer).toBeTruthy();\n\t\t});\n\n\t\tawait it('should return a string when encoding is utf-8', async () => {\n\t\t\tconst utf8Data = await promises.readFile('./test/file.txt', 'utf-8');\n\t\t\texpect(typeof utf8Data === 'string').toBeTruthy();\n\t\t});\n\n\t\tawait it('should return a string with \"Hello World\"', async () => {\n\t\t\tconst utf8Data = await promises.readFile('./test/file.txt', 'utf-8');\n\t\t\texpect(utf8Data).toBe('Hello World');\n\t\t});\n\t});\n\n\tawait describe('fs.promises.mkdtemp', async () => {\n\t\tawait it('should be a function', async () => {\n\t\t\texpect(typeof promises.mkdtemp).toBe(\"function\");\n\t\t});\n\n\t\tawait it('should create a new directory', async () => {\n\t\t\tconst directory = await promises.mkdtemp('fs-test-');\n\t\t\texpect(existsSync(directory)).toBeTruthy();\n\t\t\tawait promises.rmdir(directory);\n\t\t});\n\t});\n\n\tawait describe('fs.promises.rm', async () => {\n\t\tawait it('should be a function', async () => {\n\t\t\texpect(typeof promises.rm).toBe(\"function\");\n\t\t});\n\n\t\tawait it('should remove an text file', async () => {\n\n\t\t\tconst dir = await promises.mkdtemp('fs-test-');\n\t\t\tconst txt1 = join(dir, 'file1.txt');\n\t\t\tawait promises.writeFile(txt1, '');\n\n\n\t\t\texpect(existsSync(txt1)).toBeTruthy();\n\t\t\tawait promises.rm(txt1);\n\t\t\texpect(existsSync(txt1)).toBeFalsy();\n\t\t\t\n\t\t\t// Clear\n\t\t\tawait promises.rmdir(dir);\n\t\t});\n\n\t\tawait it('should not remove an non-empty folder if recursive option is false and should remove an non-empty folder if recursive option is true', async () => {\n\n\t\t\tconst dir = await promises.mkdtemp('fs-test-');\n\n\t\t\tawait promises.writeFile(join(dir, \"file1.txt\"), \"\");\n\t\t\tawait promises.writeFile(join(dir, \"file2.txt\"), \"\");\n\t\t\tawait promises.mkdir(join(dir, \"some_dir\"));\n\t\t\tawait promises.mkdir(join(dir, \"some_dir\", \"file.txt\"));\n\n\t\t\texpect(existsSync(dir)).toBeTruthy();\n\n\t\t\ttry {\n\t\t\t\tawait promises.rm(dir, { recursive: false });\n\t\t\t} catch (error) {\n\t\t\t\texpect(error).toBeDefined();\n\t\t\t}\n\n\t\t\t// Dir should still exists because recursive was `false`\n\t\t\texpect(existsSync(dir)).toBeTruthy();\n\n\t\t\tawait promises.rm(dir, { recursive: true });\n\n\t\t\t// Dir should not exists anymore because recursive was `true`\n\t\t\texpect(existsSync(dir)).toBeFalsy();\n\t\t});\n\t});\n}\n", "import { describe, it, expect } from '@gjsify/unit';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from \"url\";\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\n\nimport { existsSync, readdirSync, readFileSync, mkdirSync, rmdirSync, writeFileSync, unlinkSync, watch, mkdtempSync, rmSync } from 'fs';\n\nexport default async () => {\n\tawait describe('fs.existsSync', () => {\n\n\t\tconst existingFiles = ['tsconfig.json', 'package.json', 'test.gjs.js'];\n\t\tconst nonExistingFiles = ['asdasd', '/asdasd', ''];\n\n\t\tit('should return true for existing files', () => {\n\t\t\tfor (const file of existingFiles) {\n\t\t\t\tconst result = existsSync(file);\n\t\t\t\texpect(result).toBe(true)\n\t\t\t}\n\t\t});\n\n\t\tit('should return false for non existing files', () => {\n\t\t\tfor (const file of nonExistingFiles) {\n\t\t\t\tconst result = existsSync(file);\n\t\t\t\texpect(result).toBe(false)\n\t\t\t}\n\t\t});\n\t});\n\n\tawait describe('fs.readdirSync', () => {\n\t\tit('should return no files for an empty directory', () => {\n\t\t\tconst dir = mkdtempSync('fs-test-');\n\t\t\tconst files = readdirSync(dir);\n\t\t\texpect(files.length).toBe(0);\n\n\t\t\t// Clear\n\t\t\trmdirSync(dir);\n\t\t});\n\n\t\tit('should return the files for non-empty directory', () => {\n\t\t\tconst dir = mkdtempSync('fs-test-');\n\t\t\tconst txt1 = join(dir, 'test1.txt');\n\t\t\tconst txt2 = join(dir, 'test2.txt');\n\t\t\tconst dir1 = join(dir, 'empty-dir');\n\t\t\twriteFileSync(txt1, '');\n\t\t\twriteFileSync(txt2, '');\n\t\t\tmkdirSync(dir1);\n\t\t\tconst files = readdirSync(dir);\n\t\t\texpect(files.length).toEqual(3);\n\n\t\t\t// Clear\n\t\t\trmSync(txt1);\n\t\t\trmSync(txt2);\n\t\t\trmdirSync(dir1);\n\t\t\trmdirSync(dir);\n\t\t});\n\n\t\tit('should return the file with the name \"file.txt\"', () => {\n\t\t\tconst dir = mkdtempSync('fs-test-');\n\t\t\tconst expectedFileName = 'file.txt';\n\t\t\tconst file = join(dir, expectedFileName);\n\n\t\t\twriteFileSync(file, '');\n\n\t\t\tconst files = readdirSync(dir);\n\t\t\texpect(files[0]).toEqual(expectedFileName);\n\n\t\t\t// Clear\n\t\t\trmSync(file);\n\t\t\trmdirSync(dir);\n\t\t});\n\n\t\tit('should return with file types if option \"withFileTypes\" is `true`', () => {\n\t\t\tconst dir = mkdtempSync('fs-test-');\n\t\t\tconst expectedFile = 'file.txt';\n\t\t\tconst expectedDir = 'subdir';\n\t\t\tconst file = join(dir, expectedFile);\n\t\t\tconst subdir = join(dir, expectedDir);\n\n\t\t\twriteFileSync(file, '');\n\t\t\tmkdirSync(subdir);\n\n\t\t\tconst files = readdirSync(dir, { withFileTypes: true });\n\n\t\t\texpect(files.length).toBe(2);\n\n\t\t\tconst fileWithTypes = files.find((f) => f.name === expectedFile);\n\t\t\tconst dirWithTypes = files.find((f) => f.name === expectedDir);\n\n\t\t\texpect(fileWithTypes.isFile()).toBeTruthy();\n\t\t\texpect(fileWithTypes.isDirectory()).toBeFalsy();\n\n\t\t\texpect(dirWithTypes.isFile()).toBeFalsy();\n\t\t\texpect(dirWithTypes.isDirectory()).toBeTruthy();\n\n\t\t\t// Clear\n\t\t\trmSync(file);\n\t\t\trmdirSync(subdir);\n\t\t\trmdirSync(dir);\n\t\t});\n\t});\n\n\tawait describe('fs.readFileSync', () => {\n\t\tit('should return a Buffer if no encoding was specified', () => {\n\t\t\tconst bufferData = readFileSync('package.json');\n\t\t\texpect(bufferData instanceof Buffer).toBeTruthy();\n\t\t});\n\n\t\tit('should return a string when encoding is utf-8', () => {\n\t\t\tconst utf8Data = readFileSync('./test/file.txt', 'utf-8');\n\t\t\texpect(typeof utf8Data === 'string').toBeTruthy();\n\t\t});\n\n\t\tit('should return a string with \"Hello World\"', () => {\n\t\t\tconst utf8Data = readFileSync('./test/file.txt', 'utf-8');\n\t\t\texpect(utf8Data).toBe('Hello World');\n\t\t});\n\t});\n\n\tawait describe('fs.mkdirSync', () => {\n\t\tconst dir = './foobar';\n\n\t\tit(`should be executed with \"${dir}\" without error`, () => {\n\t\t\tmkdirSync(dir);\n\t\t});\n\n\t\tit(`${dir} should exists`, () => {\n\t\t\texpect(existsSync(dir)).toBeTruthy();\n\t\t});\n\t});\n\n\tawait describe('fs.rmdirSync', () => {\n\t\tconst dir = './foobar';\n\n\t\tit(`should be executed with \"${dir}\" without error`, () => {\n\t\t\trmdirSync(dir);\n\t\t});\n\n\t\tit(`\"${dir}\" should not exists (anymore)`, () => {\n\t\t\tconst utf8Data = readFileSync('./test/file.txt', 'utf-8');\n\t\t\texpect(typeof utf8Data === 'string').toBeTruthy();\n\t\t});\n\t});\n\n\tawait describe('fs.writeFileSync', () => {\n\t\tconst watchMe = join(__dirname, 'test/watch.js');\n\n\t\tit(`should be executed without error`, () => {\n\t\t\twriteFileSync(watchMe, '// test');\n\t\t});\n\n\t\tit(`fs.watch should watch ${watchMe} for changes`, () => {\n\t\t\tconst watcher = watch(watchMe, {persistent: true}, console.log);\n\n\t\t\twatcher.on('change', console.log).on('rename', console.log);\n\n\t\t\tsetTimeout(() => { watcher.close(); }, 1000);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\twriteFileSync(watchMe, '// test');\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tunlinkSync(watchMe);\n\t\t\t\t}, 100);\n\t\t\t}, 100);\n\t\t});\n\t});\n\n\tawait describe('fs.mkdtempSync', () => {\n\n\t\tit('should be a function', () => {\n\t\t\texpect(typeof mkdtempSync).toBe(\"function\");\n\t\t});\n\n\t\tit('should create a new directory', () => {\n\t\t\tconst directory = mkdtempSync('fs-test-');\n\t\t\texpect(existsSync(directory)).toBeTruthy();\n\t\t\trmdirSync(directory);\n\t\t});\n\t});\n\n}\n", "\nimport { run } from '@gjsify/unit';\n\nimport testSuiteCallback from './callback.spec.js';\nimport testSuiteFileHandle from './file-handle.spec.js';\nimport testSuitePromise from './promises.spec.js';\nimport testSuiteSync from './sync.spec.js';\n\n\nrun({testSuiteCallback, testSuiteFileHandle, testSuitePromise, testSuiteSync});"],
5
+ "mappings": "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",
6
+ "names": ["err", "promises", "join", "existsSync"]
7
+ }