New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More ā†’
Socket
Sign inDemoInstall
Socket

creatium

Package Overview
Dependencies
Maintainers
0
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

creatium

Build your create-bins quickly and easily

  • 0.1.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
23
decreased by-48.89%
Maintainers
0
Weekly downloads
Ā 
Created
Source

Creatium

Web About Us Donate Github Twitter Instagram Medium

License Version

šŸ¤” What is it creatium?

creatium is a JavaScript Library for creating project templates.

Useful for create-binaries like pnpm create backan

Read more

Demo of the creatium library:

demo

Table of contents

šŸ“„ Description

Build your create-bins quickly and easily

šŸ”‘ Installation

npm install creatium
# or 
pnpm add creatium
# or 
yarn add creatium
# or 
deno install creatium
# or 
bun add creatium

šŸš€ Usage

Create a cli and a library project with creatium

Simple use case

Recommended for most use cases.

Below we show a practical example.

{my-library-name} refers to the name of your library. Change it to the name of your library.

Project structure

Create a project with the following structure:

šŸ“‚ data
ā”œā”€ā”€ šŸ“‚ templates
ā”‚   ā”œā”€ā”€ šŸ“‚ js-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   ā””ā”€ā”€ šŸ“‚ ts-project
ā”‚       ā””ā”€ā”€ ... (files, folders...)
šŸ“‚ src
ā”œā”€ā”€ bin.js
ā”œā”€ā”€ lib.js
ā”œā”€ā”€ core.js
šŸ“„ package.json
ā”‚
src/core.js

Create a new instance of creatium and export it as core


import { dirname, join } from 'node:path'
import { fileURLToPath } from 'node:url'
import { version }  from './package.json'
import { Creatium } from 'creatium'

const currentDir   = join( dirname( fileURLToPath( import.meta.url ) ) )
const templatesDir = join( currentDir, '..', 'data','templates' ) // absolute path for `templates` folder

export const core = new Creatium( {
 name: '{my-library-name}', // recomended use the name of your package.json becasue it will be used by updater function
 version,
 templates : {
  js : {
   input : join( templatesDir, 'js-project' ),
   name  : 'JavaScript project',
  },
  ts : {
   input : join( templatesDir, 'ts-project' ),
   name  : 'TypeScript project',
  },
 },
} )
src/bin.js

Create a bin file and call the cli method of the core instance.


#!/usr/bin/env node

// create cli
import { core } from './core.js'
await core.cli()
src/lib.js

Create a library file and export the create function for use outside.

import { core } from './core.js'

/**
 * Create project template.
 * @param {Parameters<typeof core.build>[0]} params - The parameters required for creation.
 * @returns {Promise<Object>} A promise that resolves to the result of the creation process.
 */
export const create = async ( params ) => {

 return await core.build( params )

}
package.json

Create a package.json file with the following structure:

{
 "name": "create-{my-library-name}",
 "version": "0.0.1",
 "type": "module",
 "main": "src/lib.js",
 "module": "src/lib.js",
 "bin": {
  "create-{my-library-name}": "src/bin.js"
 },
 "scripts": {
   "dev": "node src/bin.js",
 },
 "files": [
  "src",
  "data",
 ]
}
Data (templates)

Create a data folder with your templates.

šŸ“‚ data
ā”œā”€ā”€ šŸ“‚ templates
ā”‚   ā”œā”€ā”€ šŸ“‚ js-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   ā”œā”€ā”€ šŸ“‚ ts-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚
Execute

Once the package is published you can use it with:

npm create {my-library-name}
# or
pnpm create {my-library-name}
# or
yarn create {my-library-name}
# or
bun create {my-library-name}
# or
deno create {my-library-name}

Advanced use case

You can use the CreatiumCore class to create a fully customized cli and user prompt.

This class is the one that the main Creatium class uses to function.

Below we show a practical example.

{my-library-name} refers to the name of your library. Change it to the name of your library.

Project structure

Create a project with the following structure:

šŸ“‚ data
ā”œā”€ā”€ šŸ“‚ templates
ā”‚   ā”œā”€ā”€ šŸ“‚ js-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   ā”œā”€ā”€ šŸ“‚ ts-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   šŸ“‚ partials
ā”‚       ā”œā”€ā”€ šŸ“‚ workspace (used in example)
ā”‚       ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚       ā””ā”€ā”€ šŸ“‚ .../
šŸ“‚ src
ā”œā”€ā”€ bin.js
ā”œā”€ā”€ lib.js
ā”œā”€ā”€ core.js
šŸ“„ package.json
ā”‚
src/core.js
  • Create a new instance of CreatiumCore and export it as core
  • Create and export createTemplate function for use outside in src/lib.js and src/bin.js
import { dirname, join } from 'node:path'
import { fileURLToPath } from 'node:url'
import { version }  from './package.json'
import { CreatiumCore } from 'creatium'

const currentDir   = join( dirname( fileURLToPath( import.meta.url ) ) )
const dataDir      = join( currentDir, '..', 'data' ) // Absolute path for the `data` folder
const partialsDir = join( dataDir, 'partials' )
const templatesDir = join( dataDir, 'templates' )

export const core = new CreatiumCore( {
 name: '{my-library-name}',
 version,
 updater  : true,
 cache    : true,
 prompt   : {
  output : {
   type         : 'output',
   alias        : [ 'o' ],
   desc         : 'Where do you want create a new project?',
  },
  name : {
   type  : 'name',
   alias : [ 'n' ],
  },
  wsFiles : {
   type      : 'boolean',
   desc      : 'Include workspace files',
   promptMsg : 'Do you want add a workspace files like LICENSE, .npmrc and .gitignore?',
  },
  desc : {
   type : 'text',
   desc : 'Add a description of your project',
  },
  input : {
   type    : 'template',
   desc    : 'Select template',
   options : {
    js : {
     input : join( templatesDir, 'js-project' ),
     name  : 'JavaScript project',
    },
    ts : {
     input : join( templatesDir, 'ts-project' ),
     name  : 'TypeScript project',
    },
   },
  },
  install : {
   type        : 'install',
   desc        : 'Select package manager',
   onlyOptions : [
    'pnpm',
    'npm',
    'deno',
   ], // Only these package managers can be selected
  },
  openEditor : { type: 'openEditor' },
 },
} )

/**
 * Function for create a new project template.
 * @param {Awaited<ReturnType<typeof core.cli>>} params - The values to create the template.
 * @returns {Promise<void>} - A promise that resolves when the template is created.
 */
export const createTemplate = async ( params ) => {

 try {

  const {
   output,
   input,
   install,
   openEditor,
   name,
   wsFiles,
  } = params

  const { prompt } = core.utils // extract prompt utils and use it for write in prompt line

  // Copy the workspace partials folder if wsFiles is true.
  // this must be first than the creatium.createTemplate because creatium.createTemplate ends the line process
  // and wsFiles must be override in the creatium.createTemplate function.
  if ( wsFiles ) {

   await core.copyDir( {
    input : join( partialsDir, 'workspace' ),
    output,
   } )

   prompt.log.success( 'Added workspace files!' )

  }

  // example of dynamic pkg json config
  const pkgJSON = {
   name        : name,
   description : consts.desc,
   version     : '0.0.1',
   license     : wsFiles ? 'MIT' : undefined
  }

  await core.createTemplate( {
   output,
   input,
   install,
   openEditor,
   name,
   // custom parameters for been susbstituted in the template files
   consts : {
    // example of dynamic pkg json config
    pkg : JSON.stringify( pkgJSON, null, 2 ),
   },
  } )

 }
 catch ( error ) {

  if ( error instanceof Error ) prompt.log.error( error.message ) // show error message in prompt line
  else console.error( 'Unexpected error:', error )

  core.cancel() // cancel the process

 }

}

src/bin.js

Create a bin file and call the cli method of the core instance.

#!/usr/bin/env node

import { core, createTemplate } from './core.js'
// Run the CLI and obtain the prompt values
const res = await core.cli()
// Call to the create function for create the template
await createTemplate( res )

src/lib.js

Create a library file and export the create function for use outside.

import { core, createTemplate } from './core.js'

/**
 * Create project template.
 * @param {Parameters<typeof core.build>[0]} params - The parameters required for creation.
 * @returns {Promise<Object>} A promise that resolves to the result of the creation process.
 */
export const create = async ( params ) => {

  const res = await core.build( params )
  await createTemplate( res )
  return res

}
package.json

Create a package.json file with the following structure:

{
 "name": "create-{my-library-name}",
 "version": "0.0.1",
 "type": "module",
 "main": "src/lib.js",
 "module": "src/lib.js",
 "bin": {
  "create-{my-library-name}": "src/bin.js"
 },
  "scripts": {
   "dev": "node src/bin.js",
 },
 "files": [
  "src",
  "data",
 ]
}
Data (templates & partials)

Create a data folder with your templates and your partials.

šŸ“‚ data
ā”œā”€ā”€ šŸ“‚ templates
ā”‚   ā”œā”€ā”€ šŸ“‚ js-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   ā”œā”€ā”€ šŸ“‚ ts-project
ā”‚   ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚   šŸ“‚ partials
ā”‚       ā”œā”€ā”€ šŸ“‚ workspace (used in example)
ā”‚       ā”‚   ā””ā”€ā”€ ... (files, folders...)
ā”‚       ā””ā”€ā”€ šŸ“‚ .../
ā”‚
Execute

Once the package is published you can use it with:

npm create {my-library-name}
# or
pnpm create {my-library-name}
# or
yarn create {my-library-name}
# or
bun create {my-library-name}
# or
deno create {my-library-name}

Api documentation

Classes

Creatium

Class of Creatium for create project templates (CLI and Library).

Example
//////////////// core.js ///////////////////

import { Creatium } from 'creatium'
export const core = new Creatium({
  name: 'My Project',
  version: '1.0.0',
  templates: {
    ...
  },
})

//////////////// bin.js ///////////////////

import { core } from './core.js'
core.cli()

//////////////// lib.js ///////////////////

import { core } from './core.js'
export const create = core.build
Constructors
new Creatium()
new Creatium(options: {
  cache: boolean;
  consts: Record<string, string>;
  intro: false | (data: HookParams) => Response<void>;
  name: string;
  onCancel: false | (data: HookParams) => Response<void>;
  opts: {
     install: false | [
        | "bun"
        | "deno"
        | "npm"
        | "pnpm"
        | "yarn", 
        | "bun"
        | "deno"
        | "npm"
        | "pnpm"
        | "yarn", ...("bun" | "deno" | "npm" | "pnpm" | "yarn")[]];
     name: boolean;
     openEditor: false | ["code" | "subl" | "webstorm", "code" | "subl" | "webstorm", ...("code" | "subl" | "webstorm")[]];
    };
  outro: false | (data: HookParams) => Response<void>;
  templates: {};
  updater: boolean;
  version: string;
 }): Creatium
Parameters
ParameterTypeDescription
optionsobject-
options.cache?booleanUse cache Default true
options.consts?Record<string, string>Add consts to use in your templates.
options.intro?false | (data: HookParams) => Response<void>Set custom intro
options.namestringSet name of you project
options.onCancel?false | (data: HookParams) => Response<void>Set custom function foor when user cancels the process
options.opts?objectSet your prompt options
options.opts.install?false | [ | "bun" | "deno" | "npm" | "pnpm" | "yarn", | "bun" | "deno" | "npm" | "pnpm" | "yarn", ...("bun" | "deno" | "npm" | "pnpm" | "yarn")[]]Active/deactivate the install prompt Also, You can set the installators that you want to use.
options.opts.name?booleanActive/deactivate the name prompt
options.opts.openEditor?false | ["code" | "subl" | "webstorm", "code" | "subl" | "webstorm", ...("code" | "subl" | "webstorm")[]]Active/deactivate the openEditor prompt. Also, You can set the editors that you want to use.
options.outro?false | (data: HookParams) => Response<void>Set custom outro
options.templatesobjectSet your template ooptions
options.updater?booleanUse updater Default false
options.versionstringSet version of you current project Used in for the updater notifications.
Returns

Creatium

Methods
build()
build(values?: {
  input: string;
  install: Installer;
  name: string;
  openEditor: TextEditor;
  output: string;
 }, opts?: CreateOpts): Promise<{
  input: string;
  install: undefined;
  name: undefined;
  openEditor: undefined;
  output: string;
}>

A simplified version of the build method from the main class.

Parameters
ParameterTypeDescription
values?objectThe values to override the CLI prompts. If not set, the CLI prompts will be executed.
values.input?stringSet the input path or the template key
values.install?InstallerSet the installer
values.name?stringSet the name of the template
values.openEditor?TextEditorOpen editor
values.output?stringSet the output path
opts?CreateOptsThe options to pass to the CLI.
Returns

Promise<{ input: string; install: undefined; name: undefined; openEditor: undefined; output: string; }>

A promise resolving to the prompt values obtained after executing the CLI.

NameType
input?string
install?undefined
name?undefined
openEditor?undefined
output?string
Examples
// simple usage
await core.build()
// custom usage
await core.build( { args : process.argv.slice(4), hideBin : false } )
cli()
cli(props?: CliOpts): Promise<{
  input: string;
  install: undefined;
  name: undefined;
  openEditor: undefined;
  output: string;
}>

A simplified version of the cli method from the main class. Initializes and executes the command-line interface (CLI) process.

Parameters
ParameterTypeDescription
props?CliOptsOptional CLI options to configure the initialization process.
Returns

Promise<{ input: string; install: undefined; name: undefined; openEditor: undefined; output: string; }>

A promise resolving to the prompt values obtained after executing the CLI.

NameType
input?string
install?undefined
name?undefined
openEditor?undefined
output?string
Examples
// simple usage
await core.cli()
// custom usage
await core.cli( { args : process.argv.slice(4), hideBin : false } )

CreatiumCore<C>

Customizable class of Creatium for create project templates (CLI and Library).

Example
//////////////// core.js ///////////////////

export const core = new CreatiumCore({
  name: 'My Project',
  version: '1.0.0',
  prompts: {
    ...
  },
  ...
})

//////////////// bin.js ///////////////////

import { core } from './core.js'
const res = await core.cli()
// do something with res...
await core.createTemplate( res )

//////////////// lib.js ///////////////////

import { core } from './core.js'
export const create = async (args) => {
  const res = await core.build( args )
  // do something with res...
  await core.createTemplate( res )
}
Type Parameters
Type ParameterDefault typeDescription
C extends ConfigConfig
Accessors
debugMode
Set Signature
set debugMode(value: boolean): void

Force debug mode

Parameters
ParameterType
valueboolean
Returns

void

Constructors
new CreatiumCore()
new CreatiumCore<C>(config: C): CreatiumCore<C>
Parameters
ParameterType
configC
Returns

CreatiumCore<C>

Methods
build()
build(values?: { [K in string | number | symbol]: { [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: ((...)[(...)] extends Object ? (...) extends (...) ? (...) : (...) : never)[K] } }[K] }[K] }, opts?: CreateOpts): Promise<{ [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: (C["prompt"][K] extends Object ? T extends keyof OptionsClasses ? { [K in (...) | (...) | (...)]: (...)[(...)] } : never : never)[K] } }[K] }>

Initialize the CLI and executes the callback function passed in the config.

Parameters
ParameterTypeDescription
values?{ [K in string | number | symbol]: { [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: ((...)[(...)] extends Object ? (...) extends (...) ? (...) : (...) : never)[K] } }[K] }[K] }The values to override the CLI prompts. If not set, the CLI prompts will be executed.
opts?CreateOptsThe options to pass to the CLI.
Returns

Promise<{ [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: (C["prompt"][K] extends Object ? T extends keyof OptionsClasses ? { [K in (...) | (...) | (...)]: (...)[(...)] } : never : never)[K] } }[K] }>

The result of the callback function.

cancel()
cancel(message?: string): Promise<void>

Cancels the current process and exits with code 0.

If a message is provided, it will be displayed in the console. If onCancel is set in the config, it will be called with the current data. If onCancel is not set, a default message will be displayed.

Parameters
ParameterTypeDescription
message?stringThe message to display before exiting.
Returns

Promise<void>

cli()
cli(props?: CliOpts): Promise<{ [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: (C["prompt"][K] extends Object ? T extends keyof OptionsClasses ? { [K in (...) | (...) | (...)]: (...)[(...)] } : never : never)[K] } }[K] }>

Initializes and executes the command-line interface (CLI) process.

Parameters
ParameterTypeDescription
props?CliOptsOptional CLI options to configure the initialization process.
Returns

Promise<{ [K in string | number | symbol]: { [K in string | number | symbol]?: { [K in string | number | symbol]: (C["prompt"][K] extends Object ? T extends keyof OptionsClasses ? { [K in (...) | (...) | (...)]: (...)[(...)] } : never : never)[K] } }[K] }>

A promise resolving to the prompt values obtained after executing the CLI.

Examples
// simple usage
await core.cli()
// custom usage
await core.cli( { args : process.argv.slice( 4), hideBin : false } )
copyDir()
copyDir(data: {
  input: string;
  output: string;
}): Promise<void>

Copy a directory from input path to output path.

Parameters
ParameterTypeDescription
dataobjectOptions object with input and output paths.
data.inputstringThe path to the directory to copy.
data.outputstringThe path to the destination directory.
Returns

Promise<void>

  • Resolves when the directory has been copied.
Example
const copyResult = await core.copyDir({
  input : '/path/to/sourceDir',
  output: '/path/to/destinationDir',
})
createTemplate()
createTemplate(values: CreateTemplateOpts): Promise<void>

Create a new project template.

Parameters
ParameterTypeDescription
valuesCreateTemplateOptsThe values to create the template.
Returns

Promise<void>

  • A promise that resolves when the template is created.
Examples
// basic usage
await core.createTemplate( { input : 'my/template/path', output : 'my/project/path' } )
// custom usage
await core.createTemplate( {
  input : 'my/template/path',
  output : 'my/project/path',
  install : 'pnpm',
  open : 'vscode',
  consts : {
    version : '1.0.0',
    header : '// Template generated by Creatium. a project from PigeonPosse',
  },
} )
getTemplateInput()
getTemplateInput(input?: {
  input: string;
}): Promise<undefined | string>

Return the input path of a template by name or path.

Parameters
ParameterTypeDescription
input?objectThe name of the template or the path to the template.
input.input?string-
Returns

Promise<undefined | string>

The input path of the template or undefined if not found.

Examples
// with template path
const input = await core.getTemplateInput( { input : 'my/template/path' } )
// With template key
// template key must be specified in the config prompt secction.
const input = await core.getTemplateInput( { input : 'templateKey' )
install()
install(options?: {
  input: string;
  installer: Installer;
}): Promise<void>

Installs the project with the given package manager.

Parameters
ParameterTypeDescription
options?objectThe options to install.
options.input?stringThe path to the folder. If not provided, the current directory is used.
options.installer?InstallerThe package manager to use for the installation.
Returns

Promise<void>

Example
await core.install( {
  installer : 'pnpm',
  input     : 'my/project/path',
} )
intro()
intro(message?: string): Promise<void>

Intro prompt line.

If the parameter message is provided, it will be used as the intro message. If the intro option is a function, it will be called with the this.#data as the argument. If the intro option is undefined, the default intro message will be used.

Parameters
ParameterTypeDescription
message?stringThe intro message.
Returns

Promise<void>

openEditor()
openEditor(params: {
  editor: TextEditor;
  input: string;
}): Promise<void>

Open the project in the given editor.

Parameters
ParameterTypeDescription
paramsobjectThe parameters for opening the editor.
params.editor?TextEditorThe editor to open the project in.
params.input?stringThe input path. If not provided, the current directory is used.
Returns

Promise<void>

Example
await core.openEditor( {
  editor : 'vscode',
  input  : 'my/project/path',
 })
outro()
outro(message?: string): Promise<void>

Outro prompt line.

If the parameter message is provided, it will be used as the outro message. If the outro option is a function, it will be called with the this.#data as the argument. If the outro option is undefined, the default outro message will be used.

Parameters
ParameterTypeDescription
message?stringThe outro message.
Returns

Promise<void>

replacePlaceholders()
replacePlaceholders(args: {
  input: string;
  params: Params;
}): Promise<void>

Replaces placeholders in files within the specified directory.

This function searches for files in the provided input directory and replaces placeholders within those files using the specified parameters. The placeholders in the content are replaced with values from the params object.

Parameters
ParameterTypeDescription
argsobjectThe arguments object.
args.input?stringThe directory path containing files with placeholders.
args.params?ParamsAn object containing key-value pairs for replacing placeholders.
Returns

Promise<void>

A Promise that resolves once all placeholders have been replaced.

Example
await core.replacePlaceholders( {
  input  : 'my/project/path',
  params : { placeholder1: 'value1', placeholder2: 'value2' },
})
updateNotify()
updateNotify(opts?: {
  custom: (info?: UpdateInfo) => Response<void>;
  opts: NotifyOptions;
}): Promise<void>

Shows a notification if the current package is outdated.

information: If this 'custom' function is provided, the default notification will not be shown.


Parameters
ParameterTypeDescription
opts?objectOptions for the update notification.
opts.custom?(info?: UpdateInfo) => Response<void>A custom function to run with the update
opts.opts?NotifyOptionsOptions for the update-notifier package.
Returns

Promise<void>

Examples
// With default options. Recommended for most use cases.
await core.updateNotify()
// With custom options
await core.updateNotify({ opts: { ... } })
// With custom function
await core.updateNotify({ custom: () => {} })
Properties
PropertyType
configC
utils__module

Type Aliases

CliOpts
type CliOpts: {
  args: string[];
  hideBin: boolean;
};
Type declaration
NameTypeDescription
args?string[]Arguments to pass to the command Default process.argv.slice(2)
hideBin?booleanHide the first two arguments Default false

Config
type Config: {
  cache: boolean;
  hooks: {
     afterPrompt: <D>(data: D) => Response<D | undefined>;
     beforePrompt: <D>(data: D) => Response<D | undefined>;
    };
  intro: (data: HookParams) => Response<void> | false;
  name: string;
  onCancel: (data: HookParams) => Response<void> | false;
  outro: (data: HookParams) => Response<void> | false;
  prompt: OptionsParams;
  updater: boolean;
  version: string;
};
Type declaration
NameTypeDescription
cache?booleanUse cache Default true
hooks?{ afterPrompt: <D>(data: D) => Response<D | undefined>; beforePrompt: <D>(data: D) => Response<D | undefined>; }hooks for
hooks.afterPrompt?<D>(data: D) => Response<D | undefined>-
hooks.beforePrompt?<D>(data: D) => Response<D | undefined>-
intro?(data: HookParams) => Response<void> | falseSet custom intro
namestringSet name of you project
onCancel?(data: HookParams) => Response<void> | falseSet custom function foor when user cancels the process
outro?(data: HookParams) => Response<void> | falseSet custom outro
promptOptionsParamsSet you prompts config
updater?booleanUse updater Default false
versionstringSet version of you current project Used in for the updater notifications.

CreateOpts
type CreateOpts: CliOpts & {
  activeCli: boolean;
};
Type declaration
NameTypeDescription
activeCli?booleanOptions for activate cli. Default true

CreateTemplateOpts
type CreateTemplateOpts: {
  consts: Record<string, string>;
  input: string;
  install: Installer;
  name: string;
  openEditor: TextEditor;
  output: string;
};
Type declaration
NameTypeDescription
consts?Record<string, string>Add consts to use in your templates.
input?stringSet the input path or the template key
install?InstallerSet the installer
name?stringSet the name of the template
openEditor?TextEditorOpen editor
output?stringSet the output path

Variables

env
const env: {
  isBrowser: boolean;
  isBun: boolean;
  isDeno: boolean;
  isJsDom: boolean;
  isNode: boolean;
  isWebWorker: boolean;
 } = _env;

Environment functions

Type declaration
NameType
isBrowserboolean
isBunboolean
isDenoboolean
isJsDomboolean
isNodeboolean
isWebWorkerboolean

INSTALLER
const INSTALLER: {
  BUN: 'bun';
  DENO: 'deno';
  NONE: 'none';
  NPM: 'npm';
  PNPM: 'pnpm';
  YARN: 'yarn';
};

installer values used in install option.

Type declaration
NameTypeDefault value
BUN"bun"'bun'
DENO"deno"'deno'
NONE"none"'none'
NPM"npm"'npm'
PNPM"pnpm"'pnpm'
YARN"yarn"'yarn'

OPTION
const OPTION: {
  array: 'array';
  boolean: 'boolean';
  install: 'install';
  multiselect: 'multiselect';
  name: 'name';
  number: 'number';
  openEditor: 'openEditor';
  output: 'output';
  path: 'path';
  select: 'select';
  template: 'template';
  text: 'text';
  void: 'void';
};

Object of the CREATIUM types

Type declaration
NameTypeDefault value
array"array"'array'
boolean"boolean"'boolean'
install"install"'install'
multiselect"multiselect"'multiselect'
name"name"'name'
number"number"'number'
openEditor"openEditor"'openEditor'
output"output"'output'
path"path"'path'
select"select"'select'
template"template"'template'
text"text"'text'
void"void"'void'

prompt
const prompt: {
  box: (opts: {
     opts: Options;
     type: PromptLineMethod;
     value: string;
    }) => void;
  columns: (opts: {
     opts: GlobalOptions;
     type: PromptLineMethod;
     value: ColumnData;
    }) => void;
  log: {
     error: (message: string) => void;
     info: (message: string) => void;
     message: (message?: string, { symbol }?: LogMessageOptions) => void;
     step: (message: string) => void;
     success: (message: string) => void;
     warn: (message: string) => void;
     warning: (message: string) => void;
    };
  number: (opts: {
     defaultValue: string;
     errorText: string;
     initialValue: string;
     message: string;
     placeholder: string;
     validate: (value: string) => string | void;
    }) => Promise<number | symbol>;
  table: (opts: {
     opts: TableUserConfig;
     type: PromptLineMethod;
     value: TableData;
    }) => void;
  cancel: void;
  confirm: Promise<boolean | symbol>;
  group: Promise<{ [P in string | number | symbol]: PromptGroupAwaitedReturn<T>[P] }>;
  groupMultiselect: Promise<symbol | Value[]>;
  intro: void;
  isCancel: value is symbol;
  multiselect: Promise<symbol | Value[]>;
  note: void;
  outro: void;
  password: Promise<string | symbol>;
  select: Promise<symbol | Value>;
  selectKey: Promise<symbol | Value>;
  spinner: {
     message: (msg?: string) => void;
     start: (msg?: string) => void;
     stop: (msg?: string, code?: number) => void;
    };
  tasks: Promise<void>;
  text: Promise<string | symbol>;
 } = _prompt;

Prompt functions

Type declaration
NameTypeDescription
box(opts: { opts: Options; type: PromptLineMethod; value: string; }) => void-
columns(opts: { opts: GlobalOptions; type: PromptLineMethod; value: ColumnData; }) => void-
log{ error: (message: string) => void; info: (message: string) => void; message: (message?: string, { symbol }?: LogMessageOptions) => void; step: (message: string) => void; success: (message: string) => void; warn: (message: string) => void; warning: (message: string) => void; }-
log.error(message: string) => void-
log.info(message: string) => void-
log.message(message?: string, { symbol }?: LogMessageOptions) => void-
log.step(message: string) => void-
log.success(message: string) => void-
log.warn(message: string) => void-
log.warning(message: string) => voidalias for log.warn().
number(opts: { defaultValue: string; errorText: string; initialValue: string; message: string; placeholder: string; validate: (value: string) => string | void; }) => Promise<number | symbol>-
table(opts: { opts: TableUserConfig; type: PromptLineMethod; value: TableData; }) => void-
cancel()void-
confirm()Promise<boolean | symbol>-
group()Promise<{ [P in string | number | symbol]: PromptGroupAwaitedReturn<T>[P] }>Define a group of prompts to be displayed and return a results of objects within the group
groupMultiselect()Promise<symbol | Value[]>-
intro()void-
isCancel()value is symbol-
multiselect()Promise<symbol | Value[]>-
note()void-
outro()void-
password()Promise<string | symbol>-
select()Promise<symbol | Value>-
selectKey()Promise<symbol | Value>-
spinner(){ message: (msg?: string) => void; start: (msg?: string) => void; stop: (msg?: string, code?: number) => void; }-
tasks()Promise<void>Define a group of tasks to be executed
text()Promise<string | symbol>-

style
const style: {
  box: (text: string, options?: Options) => string;
  color: ChalkInstance;
  columns: <Data>(data: Data, options?: GlobalOptions) => string;
  gradient: (txt: string, colors: GradientColors, opts?: GradientOpts) => string;
  line: (__namedParameters: {
     align: 'center';
     lineChar: 'āŽÆ';
     title: string;
    }) => string;
  table: (data: TableData, options?: TableUserConfig) => string;
 } = _style;

Style functions

Type declaration
NameType
box(text: string, options?: Options) => string
colorChalkInstance
columns<Data>(data: Data, options?: GlobalOptions) => string
gradient(txt: string, colors: GradientColors, opts?: GradientOpts) => string
line(__namedParameters: { align: 'center'; lineChar: 'āŽÆ'; title: string; }) => string
table(data: TableData, options?: TableUserConfig) => string

sys
const sys: __module = _sys;

System functions


TEXT_EDITOR
const TEXT_EDITOR: {
  NONE: 'none';
  SUBLIME: 'subl';
  VSCODE: 'code';
  WEBSTORM: 'webstorm';
};

Text editor values used in openEditor option.

Type declaration
NameTypeDefault value
NONE"none"'none'
SUBLIME"subl"'subl'
VSCODE"code"'code'
WEBSTORM"webstorm"'webstorm'

šŸ‘Øā€šŸ’» Development

creatium is an open-source project and its development is open to anyone who wants to participate.

Issues Pull requests Read more

ā˜• Donate

Help us to develop more interesting things.

Donate

šŸ“œ License

This software is licensed with GPL-3.0.

Read more

šŸ¦ About us

PigeonPosse is a āœØ code development collective āœØ focused on creating practical and interesting tools that help developers and users enjoy a more agile and comfortable experience. Our projects cover various programming sectors and we do not have a thematic limitation in terms of projects.

More


Web About Us Donate Github Twitter Instagram Medium

FAQs

Package last updated on 01 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with āš”ļø by Socket Inc