Commit 88ab61e

Anton Golub <antongolub@antongolub.com>
2022-04-25 08:55:45
fix: assemble ts libdefs into single file (#400)
closes #386
1 parent b8542fe
src/experimental.d.ts
@@ -1,28 +0,0 @@
-// Copyright 2021 Google LLC
-// 
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// 
-//     https://www.apache.org/licenses/LICENSE-2.0
-// 
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-import {ZxTemplate} from './index'
-
-interface Echo {
-  (pieces: TemplateStringsArray, ...args: any[]): void
-  (...args: any[]): void
-}
-export const echo: Echo
-
-export const retry: (count?: number, delay?: number) => ZxTemplate
-
-export const withTimeout: (delay?: number, signal?: string | number) => ZxTemplate
-
-type StopSpinner = () => void
-export function startSpinner(title: string): StopSpinner
src/globals.d.ts
@@ -1,33 +0,0 @@
-import {
-  $,
-  argv as _argv,
-  cd,
-  chalk as _chalk,
-  fetch as _fetch,
-  fs as _fs,
-  globby as _globby,
-  nothrow,
-  os as _os,
-  path as _path,
-  question,
-  sleep,
-  which as _which,
-} from './index'
-
-declare global {
-  var $: $
-  var argv: typeof _argv
-  var cd: cd
-  var chalk: typeof _chalk
-  // @ts-ignore
-  var fetch: typeof _fetch
-  var fs: typeof _fs
-  var globby: typeof _globby.globby & typeof _globby
-  var glob: typeof _globby.globby & typeof _globby
-  var nothrow: nothrow
-  var os: typeof _os
-  var path: typeof _path
-  var question: question
-  var sleep: sleep
-  var which: typeof _which
-}
src/index.d.ts
@@ -12,73 +12,129 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import {ChildProcess, spawn} from 'child_process'
-import {Readable, Writable} from 'stream'
-import * as _fs from 'fs-extra'
-import * as _globby from 'globby'
-import * as _os from 'os'
-import * as _path from 'path'
-import {ChalkInstance} from 'chalk'
-import * as _yaml from 'yaml'
-import _fetch from 'node-fetch'
-import {ParsedArgs} from 'minimist'
-import * as _which from 'which'
-
-export interface ZxTemplate {
-  (pieces: TemplateStringsArray, ...args: any[]): ProcessPromise<ProcessOutput>
+declare module 'zx' {
+  import {ChildProcess, spawn} from 'node:child_process'
+  import {Readable, Writable} from 'node:stream'
+  import * as _fs from 'fs-extra'
+  import * as _globby from 'globby'
+  import * as _os from 'node:os'
+  import * as _path from 'node:path'
+  import {ChalkInstance} from 'chalk'
+  import * as _yaml from 'yaml'
+  import _fetch from 'node-fetch'
+  import {ParsedArgs} from 'minimist'
+  import * as _which from 'which'
+
+  export interface ZxTemplate {
+    (pieces: TemplateStringsArray, ...args: any[]): ProcessPromise<ProcessOutput>
+  }
+
+  interface $ extends ZxTemplate {
+    verbose: boolean
+    shell: string
+    prefix: string
+    quote: (input: string) => string
+    spawn: typeof spawn
+    maxBuffer?: number | undefined
+  }
+
+  export interface ProcessPromise<T> extends Promise<T> {
+    child: ChildProcess
+    readonly stdin: Writable
+    readonly stdout: Readable
+    readonly stderr: Readable
+    readonly exitCode: Promise<number>
+
+    pipe(dest: ProcessPromise<ProcessOutput> | Writable): ProcessPromise<ProcessOutput>
+
+    kill(signal?: string | number): Promise<void>
+  }
+
+  export class ProcessOutput {
+    readonly exitCode: number | null
+    readonly signal: NodeJS.Signals | null
+    readonly stdout: string
+    readonly stderr: string
+
+    toString(): string
+  }
+
+  export type QuestionOptions = { choices: string[] }
+
+  type cd = (path: string) => void
+  type nothrow = (p: ProcessPromise<ProcessOutput>) => ProcessPromise<ProcessOutput>
+  type question = (query?: string, options?: QuestionOptions) => Promise<string>
+  type sleep = (ms: number) => Promise<void>
+  type quiet = (p: ProcessPromise<ProcessOutput>) => ProcessPromise<ProcessOutput>
+
+  export const $: $
+  export const argv: ParsedArgs
+  export const cd: cd
+  export const chalk: ChalkInstance
+  export const fetch: typeof _fetch
+  export const YAML: typeof _yaml
+  export const fs: typeof _fs
+  export const glob: typeof _globby.globby & typeof _globby
+  export const globby: typeof _globby.globby & typeof _globby
+  export const nothrow: nothrow
+  export const os: typeof _os
+  export const path: typeof _path
+  export const question: question
+  export const sleep: sleep
+  export const quiet: quiet
+  export const which: typeof _which
 }
 
-interface $ extends ZxTemplate {
-  verbose: boolean
-  shell: string
-  prefix: string
-  quote: (input: string) => string
-  spawn: typeof spawn
-  maxBuffer?: number | undefined
+declare module 'zx/globals' {
+  import {
+    $,
+    argv as _argv,
+    cd,
+    chalk as _chalk,
+    fetch as _fetch,
+    fs as _fs,
+    globby as _globby,
+    nothrow,
+    os as _os,
+    path as _path,
+    question,
+    sleep,
+    which as _which,
+  } from 'zx'
+
+  global {
+    var $: $
+    var argv: typeof _argv
+    var cd: cd
+    var chalk: typeof _chalk
+    // @ts-ignore
+    var fetch: typeof _fetch
+    var fs: typeof _fs
+    var globby: typeof _globby.globby & typeof _globby
+    var glob: typeof _globby.globby & typeof _globby
+    var nothrow: nothrow
+    var os: typeof _os
+    var path: typeof _path
+    var question: question
+    var sleep: sleep
+    var which: typeof _which
+  }
 }
 
-export interface ProcessPromise<T> extends Promise<T> {
-  child: ChildProcess
-  readonly stdin: Writable
-  readonly stdout: Readable
-  readonly stderr: Readable
-  readonly exitCode: Promise<number>
+declare module 'zx/experimental' {
+  import {ZxTemplate} from 'zx'
 
-  pipe(dest: ProcessPromise<ProcessOutput> | Writable): ProcessPromise<ProcessOutput>
+  interface Echo {
+    (pieces: TemplateStringsArray, ...args: any[]): void
+    (...args: any[]): void
+  }
+  export const echo: Echo
 
-  kill(signal?: string | number): Promise<void>
-}
+  export const retry: (count?: number, delay?: number) => ZxTemplate
 
-export class ProcessOutput {
-  readonly exitCode: number | null
-  readonly signal: NodeJS.Signals | null
-  readonly stdout: string
-  readonly stderr: string
+  export const withTimeout: (delay?: number, signal?: string | number) => ZxTemplate
 
-  toString(): string
+  type StopSpinner = () => void
+  export function startSpinner(title: string): StopSpinner
 }
 
-export type QuestionOptions = { choices: string[] }
-
-type cd = (path: string) => void
-type nothrow = (p: ProcessPromise<ProcessOutput>) => ProcessPromise<ProcessOutput>
-type question = (query?: string, options?: QuestionOptions) => Promise<string>
-type sleep = (ms: number) => Promise<void>
-type quiet = (p: ProcessPromise<ProcessOutput>) => ProcessPromise<ProcessOutput>
-
-export const $: $
-export const argv: ParsedArgs
-export const cd: cd
-export const chalk: ChalkInstance
-export const fetch: typeof _fetch
-export const YAML: typeof _yaml
-export const fs: typeof _fs
-export const glob: typeof _globby.globby & typeof _globby
-export const globby: typeof _globby.globby & typeof _globby
-export const nothrow: nothrow
-export const os: typeof _os
-export const path: typeof _path
-export const question: question
-export const sleep: sleep
-export const quiet: quiet
-export const which: typeof _which
package.json
@@ -5,18 +5,9 @@
   "main": "src/index.mjs",
   "types": "src/index.d.ts",
   "exports": {
-    ".": {
-      "import": "./src/index.mjs",
-      "types": "./src/index.d.ts"
-    },
-    "./globals": {
-      "import": "./src/globals.mjs",
-      "types": "./src/globals.d.ts"
-    },
-    "./experimental": {
-      "import": "./src/experimental.mjs",
-      "types": "./src/experimental.d.ts"
-    },
+    ".": "./src/index.mjs",
+    "./globals": "./src/globals.mjs",
+    "./experimental": "./src/experimental.mjs",
     "./package.json": "./package.json"
   },
   "bin": {