diff --git a/.eslintrc.json b/.eslintrc.json index 5a79582..87be533 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -12,7 +12,7 @@ "parserOptions": { "sourceType": "module" }, - "ignorePatterns": [ "/dist/**" ], + "ignorePatterns": [ "/lib/**" ], "overrides": [ { "files": ["**/*.ts"], diff --git a/.gitignore b/.gitignore index 9766100..ebc7b09 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ *.png node_modules dist +lib +temp package-lock.json .idea .nyc_output diff --git a/config/api-extractor.jsonc b/config/api-extractor.jsonc new file mode 100644 index 0000000..4bc80fc --- /dev/null +++ b/config/api-extractor.jsonc @@ -0,0 +1,427 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/lib/index.d.ts", + + /** + * A list of NPM package names whose exports should be treated as part of this package. + * + * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", + * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part + * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly + * imports library2. To avoid this, we can specify: + * + * "bundledPackages": [ "library2" ], + * + * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been + * local files for library1. + */ + "bundledPackages": [], + + /** + * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files + * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. + * To use the OS's default newline kind, specify "os". + * + * DEFAULT VALUE: "crlf" + */ + // "newlineKind": "crlf", + + /** + * Set to true when invoking API Extractor's test harness. When `testMode` is true, the `toolVersion` field in the + * .api.json file is assigned an empty string to prevent spurious diffs in output files tracked for tests. + * + * DEFAULT VALUE: "false" + */ + // "testMode": false, + + /** + * Specifies how API Extractor sorts members of an enum when generating the .api.json file. By default, the output + * files will be sorted alphabetically, which is "by-name". To keep the ordering in the source code, specify + * "preserve". + * + * DEFAULT VALUE: "by-name" + */ + // "enumMemberOrder": "by-name", + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + // "overrideTsconfig": { + // . . . + // } + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": true + + /** + * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce + * a full file path. + * + * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: ".api.md" + */ + // "reportFileName": ".api.md", + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportFolder": "/temp/", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportTempFolder": "/temp/", + + /** + * Whether "forgotten exports" should be included in the API report file. Forgotten exports are declarations + * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to + * learn more. + * + * DEFAULT VALUE: "false" + */ + // "includeForgottenExports": false + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + // "apiJsonFilePath": "/temp/.api.json", + + /** + * Whether "forgotten exports" should be included in the doc model file. Forgotten exports are declarations + * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to + * learn more. + * + * DEFAULT VALUE: "false" + */ + // "includeForgottenExports": false, + + /** + * The base URL where the project's source code can be viewed on a website such as GitHub or + * Azure DevOps. This URL path corresponds to the `` path on disk. + * + * This URL is concatenated with the file paths serialized to the doc model to produce URL file paths to individual API items. + * For example, if the `projectFolderUrl` is "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor" and an API + * item's file path is "api/ExtractorConfig.ts", the full URL file path would be + * "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor/api/ExtractorConfig.js". + * + * Can be omitted if you don't need source code links in your API documentation reference. + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "projectFolderUrl": "http://github.com/path/to/your/projectFolder" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": true + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + // "untrimmedFilePath": "/dist/.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. + * This file will include only declarations that are marked as "@public", "@beta", or "@alpha". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "alphaTrimmedFilePath": "/dist/-alpha.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning", + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + "addToApiReportFile": true + } + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } +} diff --git a/doc/index.md b/doc/index.md new file mode 100644 index 0000000..84aa531 --- /dev/null +++ b/doc/index.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) + +## API Reference + +## Packages + +| Package | Description | +| --- | --- | +| [node-id3](./node-id3.md) | An ID3-Tag library written in Typescript. | + diff --git a/doc/node-id3.create.md b/doc/node-id3.create.md new file mode 100644 index 0000000..63a7930 --- /dev/null +++ b/doc/node-id3.create.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [create](./node-id3.create.md) + +## create() function + +Creates a buffer containing an ID3 Tag and returns it. + +**Signature:** + +```typescript +export declare function create(tags: WriteTags): Buffer; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | + +**Returns:** + +Buffer + diff --git a/doc/node-id3.create_1.md b/doc/node-id3.create_1.md new file mode 100644 index 0000000..4c3805c --- /dev/null +++ b/doc/node-id3.create_1.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [create](./node-id3.create_1.md) + +## create() function + +Creates a buffer containing an ID3 Tag and returns it via the callback. + +**Signature:** + +```typescript +export declare function create(tags: WriteTags, callback: CreateCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| callback | [CreateCallback](./node-id3.createcallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.createcallback.md b/doc/node-id3.createcallback.md new file mode 100644 index 0000000..1d3b144 --- /dev/null +++ b/doc/node-id3.createcallback.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [CreateCallback](./node-id3.createcallback.md) + +## CreateCallback type + +Callback used to return a created ID Tag buffer. + +**Signature:** + +```typescript +export type CreateCallback = (data: Buffer) => void; +``` diff --git a/doc/node-id3.md b/doc/node-id3.md new file mode 100644 index 0000000..a002491 --- /dev/null +++ b/doc/node-id3.md @@ -0,0 +1,70 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) + +## node-id3 package + +An ID3-Tag library written in Typescript. + +## Remarks + +Used specification: [id3.org v2.3.0](http://id3.org/id3v2.3.0). + +## Functions + +| Function | Description | +| --- | --- | +| [create(tags)](./node-id3.create.md) | Creates a buffer containing an ID3 Tag and returns it. | +| [create(tags, callback)](./node-id3.create_1.md) | Creates a buffer containing an ID3 Tag and returns it via the callback. | +| [read(filebuffer, options)](./node-id3.read.md) | Reads ID3-Tags synchronously from passed buffer/filepath. | +| [read(filebuffer, callback)](./node-id3.read_1.md) | Reads ID3-Tags asynchronously from passed buffer/filepath. | +| [read(filebuffer, options, callback)](./node-id3.read_2.md) | Reads ID3-Tags asynchronously from passed buffer/filepath. | +| [removeTags(filepath)](./node-id3.removetags.md) | Removes synchronously any written ID3-Frames from the specified file. | +| [removeTags(filepath, callback)](./node-id3.removetags_1.md) | Removes asynchronously any written ID3-Frames from the specified file. | +| [removeTagsFromBuffer(data)](./node-id3.removetagsfrombuffer.md) | Remove already written ID3-Frames from a buffer | +| [update(tags, buffer, options)](./node-id3.update.md) | Updates ID3-Tags from the given buffer. | +| [update(tags, filepath, options)](./node-id3.update_1.md) | Updates ID3-Tags synchronously in the specified file. | +| [update(tags, filebuffer, callback)](./node-id3.update_2.md) | Updates ID3-Tags asynchronously in the specified file. | +| [update(tags, filebuffer, options, callback)](./node-id3.update_3.md) | Updates ID3-Tags asynchronously from the given buffer or specified file. | +| [write(tags, buffer)](./node-id3.write.md) | Replaces any existing tags with the given tags in the given buffer. | +| [write(tags, filepath)](./node-id3.write_1.md) | Replaces synchronously any existing tags with the given tags in the specified file. | +| [write(tags, filebuffer, callback)](./node-id3.write_2.md) | Replaces asynchronously any existing tags with the given tags in the given buffer or specified file. | + +## Interfaces + +| Interface | Description | +| --- | --- | +| [Options](./node-id3.options.md) | | +| [TagAliases](./node-id3.tagaliases.md) | | +| [TagIdentifiers](./node-id3.tagidentifiers.md) | | +| [Tags](./node-id3.tags.md) | | +| [WriteTags](./node-id3.writetags.md) | On write either a tag alias or tag identifier can be be specified. This is undefined behaviour when both are specified. | + +## Namespaces + +| Namespace | Description | +| --- | --- | +| [TagFrames](./node-id3.tagframes.md) | | + +## Variables + +| Variable | Description | +| --- | --- | +| [Promises](./node-id3.promises.md) | Asynchronous API for files and buffers operations using promises. | +| [TagConstants](./node-id3.tagconstants.md) | Constants documented in the id3 specifications used in tag frames. | + +## Type Aliases + +| Type Alias | Description | +| --- | --- | +| [CreateCallback](./node-id3.createcallback.md) | Callback used to return a created ID Tag buffer. | +| [ReadCallback](./node-id3.readcallback.md) | Callback signatures for asynchronous read operation. | +| [ReadErrorCallback](./node-id3.readerrorcallback.md) | Callback signatures for failing asynchronous read operation. | +| [ReadSuccessCallback](./node-id3.readsuccesscallback.md) | Callback signature for successful asynchronous read operation. | +| [RemoveCallback](./node-id3.removecallback.md) | Callback signatures for asynchronous remove operation. | +| [TagConstants](./node-id3.tagconstants.md) | | +| [TypeOrTypeArray](./node-id3.typeortypearray.md) | A utility to define an union of the given type or an array of the type. | +| [WriteCallback](./node-id3.writecallback.md) | Callback signatures for asynchronous update and write operations. | +| [WriteErrorCallback](./node-id3.writeerrorcallback.md) | Callback signature for failing asynchronous update and write operations. | +| [WriteSuccessCallback](./node-id3.writesuccesscallback.md) | Callback signature for successful asynchronous update and write operations. | + diff --git a/doc/node-id3.options.exclude.md b/doc/node-id3.options.exclude.md new file mode 100644 index 0000000..e379d7c --- /dev/null +++ b/doc/node-id3.options.exclude.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Options](./node-id3.options.md) > [exclude](./node-id3.options.exclude.md) + +## Options.exclude property + +Do not read the specified tag identifiers, defaults to none. + +**Signature:** + +```typescript +exclude?: string[]; +``` diff --git a/doc/node-id3.options.include.md b/doc/node-id3.options.include.md new file mode 100644 index 0000000..30e84ab --- /dev/null +++ b/doc/node-id3.options.include.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Options](./node-id3.options.md) > [include](./node-id3.options.include.md) + +## Options.include property + +Only read the specified tag identifiers, defaults to all. + +**Signature:** + +```typescript +include?: string[]; +``` diff --git a/doc/node-id3.options.md b/doc/node-id3.options.md new file mode 100644 index 0000000..c57f894 --- /dev/null +++ b/doc/node-id3.options.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Options](./node-id3.options.md) + +## Options interface + + +**Signature:** + +```typescript +export interface Options +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [exclude?](./node-id3.options.exclude.md) | | string\[\] | _(Optional)_ Do not read the specified tag identifiers, defaults to none. | +| [include?](./node-id3.options.include.md) | | string\[\] | _(Optional)_ Only read the specified tag identifiers, defaults to all. | +| [noRaw?](./node-id3.options.noraw.md) | | boolean | _(Optional)_ Do not generate the raw object, defaults to false. | +| [onlyRaw?](./node-id3.options.onlyraw.md) | | boolean | _(Optional)_ Only return the raw object, defaults to false. | + diff --git a/doc/node-id3.options.noraw.md b/doc/node-id3.options.noraw.md new file mode 100644 index 0000000..f899f7e --- /dev/null +++ b/doc/node-id3.options.noraw.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Options](./node-id3.options.md) > [noRaw](./node-id3.options.noraw.md) + +## Options.noRaw property + +Do not generate the `raw` object, defaults to false. + +**Signature:** + +```typescript +noRaw?: boolean; +``` diff --git a/doc/node-id3.options.onlyraw.md b/doc/node-id3.options.onlyraw.md new file mode 100644 index 0000000..5005b94 --- /dev/null +++ b/doc/node-id3.options.onlyraw.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Options](./node-id3.options.md) > [onlyRaw](./node-id3.options.onlyraw.md) + +## Options.onlyRaw property + +Only return the `raw` object, defaults to false. + +**Signature:** + +```typescript +onlyRaw?: boolean; +``` diff --git a/doc/node-id3.promises.md b/doc/node-id3.promises.md new file mode 100644 index 0000000..134d30d --- /dev/null +++ b/doc/node-id3.promises.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Promises](./node-id3.promises.md) + +## Promises variable + +Asynchronous API for files and buffers operations using promises. + +**Signature:** + +```typescript +Promises: { + readonly create: (tags: WriteTags) => Promise; + readonly write: (tags: WriteTags, filebuffer: string | Buffer) => Promise; + readonly update: (tags: WriteTags, filebuffer: string | Buffer, options?: Options) => Promise; + readonly read: (file: string | Buffer, options?: Options) => Promise; + readonly removeTags: (filepath: string) => Promise; +} +``` diff --git a/doc/node-id3.read.md b/doc/node-id3.read.md new file mode 100644 index 0000000..bbd3d3d --- /dev/null +++ b/doc/node-id3.read.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [read](./node-id3.read.md) + +## read() function + +Reads ID3-Tags synchronously from passed buffer/filepath. + +**Signature:** + +```typescript +export declare function read(filebuffer: string | Buffer, options?: Options): Tags; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| filebuffer | string \| Buffer | | +| options | [Options](./node-id3.options.md) | _(Optional)_ | + +**Returns:** + +[Tags](./node-id3.tags.md) + diff --git a/doc/node-id3.read_1.md b/doc/node-id3.read_1.md new file mode 100644 index 0000000..c64e627 --- /dev/null +++ b/doc/node-id3.read_1.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [read](./node-id3.read_1.md) + +## read() function + +Reads ID3-Tags asynchronously from passed buffer/filepath. + +**Signature:** + +```typescript +export declare function read(filebuffer: string | Buffer, callback: ReadCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| filebuffer | string \| Buffer | | +| callback | [ReadCallback](./node-id3.readcallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.read_2.md b/doc/node-id3.read_2.md new file mode 100644 index 0000000..0e384aa --- /dev/null +++ b/doc/node-id3.read_2.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [read](./node-id3.read_2.md) + +## read() function + +Reads ID3-Tags asynchronously from passed buffer/filepath. + +**Signature:** + +```typescript +export declare function read(filebuffer: string | Buffer, options: Options, callback: ReadCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| filebuffer | string \| Buffer | | +| options | [Options](./node-id3.options.md) | | +| callback | [ReadCallback](./node-id3.readcallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.readcallback.md b/doc/node-id3.readcallback.md new file mode 100644 index 0000000..8eb38b9 --- /dev/null +++ b/doc/node-id3.readcallback.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [ReadCallback](./node-id3.readcallback.md) + +## ReadCallback type + +Callback signatures for asynchronous read operation. + +**Signature:** + +```typescript +export type ReadCallback = ReadSuccessCallback & ReadErrorCallback; +``` +**References:** [ReadSuccessCallback](./node-id3.readsuccesscallback.md), [ReadErrorCallback](./node-id3.readerrorcallback.md) + diff --git a/doc/node-id3.readerrorcallback.md b/doc/node-id3.readerrorcallback.md new file mode 100644 index 0000000..89bde9d --- /dev/null +++ b/doc/node-id3.readerrorcallback.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [ReadErrorCallback](./node-id3.readerrorcallback.md) + +## ReadErrorCallback type + +Callback signatures for failing asynchronous read operation. + +**Signature:** + +```typescript +export type ReadErrorCallback = (error: NodeJS.ErrnoException | Error, tags: null) => void; +``` diff --git a/doc/node-id3.readsuccesscallback.md b/doc/node-id3.readsuccesscallback.md new file mode 100644 index 0000000..4fad056 --- /dev/null +++ b/doc/node-id3.readsuccesscallback.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [ReadSuccessCallback](./node-id3.readsuccesscallback.md) + +## ReadSuccessCallback type + +Callback signature for successful asynchronous read operation. + +**Signature:** + +```typescript +export type ReadSuccessCallback = (error: null, tags: Tags | TagIdentifiers) => void; +``` +**References:** [Tags](./node-id3.tags.md), [TagIdentifiers](./node-id3.tagidentifiers.md) + diff --git a/doc/node-id3.removecallback.md b/doc/node-id3.removecallback.md new file mode 100644 index 0000000..855438f --- /dev/null +++ b/doc/node-id3.removecallback.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [RemoveCallback](./node-id3.removecallback.md) + +## RemoveCallback type + +Callback signatures for asynchronous remove operation. + +**Signature:** + +```typescript +export type RemoveCallback = (error: NodeJS.ErrnoException | Error | null) => void; +``` diff --git a/doc/node-id3.removetags.md b/doc/node-id3.removetags.md new file mode 100644 index 0000000..0d513ba --- /dev/null +++ b/doc/node-id3.removetags.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [removeTags](./node-id3.removetags.md) + +## removeTags() function + +Removes synchronously any written ID3-Frames from the specified file. + +**Signature:** + +```typescript +export declare function removeTags(filepath: string): boolean | Error; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| filepath | string | | + +**Returns:** + +boolean \| Error + diff --git a/doc/node-id3.removetags_1.md b/doc/node-id3.removetags_1.md new file mode 100644 index 0000000..f503ddb --- /dev/null +++ b/doc/node-id3.removetags_1.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [removeTags](./node-id3.removetags_1.md) + +## removeTags() function + +Removes asynchronously any written ID3-Frames from the specified file. + +**Signature:** + +```typescript +export declare function removeTags(filepath: string, callback: RemoveCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| filepath | string | | +| callback | [RemoveCallback](./node-id3.removecallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.removetagsfrombuffer.md b/doc/node-id3.removetagsfrombuffer.md new file mode 100644 index 0000000..a8f3882 --- /dev/null +++ b/doc/node-id3.removetagsfrombuffer.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [removeTagsFromBuffer](./node-id3.removetagsfrombuffer.md) + +## removeTagsFromBuffer() function + +Remove already written ID3-Frames from a buffer + +**Signature:** + +```typescript +export declare function removeTagsFromBuffer(data: Buffer): false | Buffer; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| data | Buffer | | + +**Returns:** + +false \| Buffer + diff --git a/doc/node-id3.tagaliases.album.md b/doc/node-id3.tagaliases.album.md new file mode 100644 index 0000000..573b388 --- /dev/null +++ b/doc/node-id3.tagaliases.album.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [album](./node-id3.tagaliases.album.md) + +## TagAliases.album property + +**Signature:** + +```typescript +album?: TagFrames.Album; +``` diff --git a/doc/node-id3.tagaliases.albumsortorder.md b/doc/node-id3.tagaliases.albumsortorder.md new file mode 100644 index 0000000..d95bd86 --- /dev/null +++ b/doc/node-id3.tagaliases.albumsortorder.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [albumSortOrder](./node-id3.tagaliases.albumsortorder.md) + +## TagAliases.albumSortOrder property + +**Signature:** + +```typescript +albumSortOrder?: TagFrames.AlbumSortOrder; +``` diff --git a/doc/node-id3.tagaliases.artist.md b/doc/node-id3.tagaliases.artist.md new file mode 100644 index 0000000..8105472 --- /dev/null +++ b/doc/node-id3.tagaliases.artist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [artist](./node-id3.tagaliases.artist.md) + +## TagAliases.artist property + +**Signature:** + +```typescript +artist?: TagFrames.Artist; +``` diff --git a/doc/node-id3.tagaliases.artisturl.md b/doc/node-id3.tagaliases.artisturl.md new file mode 100644 index 0000000..51d65cd --- /dev/null +++ b/doc/node-id3.tagaliases.artisturl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [artistUrl](./node-id3.tagaliases.artisturl.md) + +## TagAliases.artistUrl property + +**Signature:** + +```typescript +artistUrl?: TagFrames.ArtistUrl; +``` diff --git a/doc/node-id3.tagaliases.audiosourceurl.md b/doc/node-id3.tagaliases.audiosourceurl.md new file mode 100644 index 0000000..2bbda3a --- /dev/null +++ b/doc/node-id3.tagaliases.audiosourceurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [audioSourceUrl](./node-id3.tagaliases.audiosourceurl.md) + +## TagAliases.audioSourceUrl property + +**Signature:** + +```typescript +audioSourceUrl?: TagFrames.AudioSourceUrl; +``` diff --git a/doc/node-id3.tagaliases.bpm.md b/doc/node-id3.tagaliases.bpm.md new file mode 100644 index 0000000..d47578d --- /dev/null +++ b/doc/node-id3.tagaliases.bpm.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [bpm](./node-id3.tagaliases.bpm.md) + +## TagAliases.bpm property + +**Signature:** + +```typescript +bpm?: TagFrames.Bpm; +``` diff --git a/doc/node-id3.tagaliases.chapter.md b/doc/node-id3.tagaliases.chapter.md new file mode 100644 index 0000000..a1d5d40 --- /dev/null +++ b/doc/node-id3.tagaliases.chapter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [chapter](./node-id3.tagaliases.chapter.md) + +## TagAliases.chapter property + +**Signature:** + +```typescript +chapter?: TagFrames.Chapter[]; +``` diff --git a/doc/node-id3.tagaliases.comment.md b/doc/node-id3.tagaliases.comment.md new file mode 100644 index 0000000..2703132 --- /dev/null +++ b/doc/node-id3.tagaliases.comment.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [comment](./node-id3.tagaliases.comment.md) + +## TagAliases.comment property + +**Signature:** + +```typescript +comment?: TagFrames.Comment; +``` diff --git a/doc/node-id3.tagaliases.commercialframe.md b/doc/node-id3.tagaliases.commercialframe.md new file mode 100644 index 0000000..4bc5738 --- /dev/null +++ b/doc/node-id3.tagaliases.commercialframe.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [commercialFrame](./node-id3.tagaliases.commercialframe.md) + +## TagAliases.commercialFrame property + +**Signature:** + +```typescript +commercialFrame?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.commercialurl.md b/doc/node-id3.tagaliases.commercialurl.md new file mode 100644 index 0000000..94c52ae --- /dev/null +++ b/doc/node-id3.tagaliases.commercialurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [commercialUrl](./node-id3.tagaliases.commercialurl.md) + +## TagAliases.commercialUrl property + +**Signature:** + +```typescript +commercialUrl?: TagFrames.CommercialUrl; +``` diff --git a/doc/node-id3.tagaliases.composer.md b/doc/node-id3.tagaliases.composer.md new file mode 100644 index 0000000..9285a8d --- /dev/null +++ b/doc/node-id3.tagaliases.composer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [composer](./node-id3.tagaliases.composer.md) + +## TagAliases.composer property + +**Signature:** + +```typescript +composer?: TagFrames.Composer; +``` diff --git a/doc/node-id3.tagaliases.conductor.md b/doc/node-id3.tagaliases.conductor.md new file mode 100644 index 0000000..09fb02c --- /dev/null +++ b/doc/node-id3.tagaliases.conductor.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [conductor](./node-id3.tagaliases.conductor.md) + +## TagAliases.conductor property + +**Signature:** + +```typescript +conductor?: TagFrames.Conductor; +``` diff --git a/doc/node-id3.tagaliases.contentgroup.md b/doc/node-id3.tagaliases.contentgroup.md new file mode 100644 index 0000000..7733cd9 --- /dev/null +++ b/doc/node-id3.tagaliases.contentgroup.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [contentGroup](./node-id3.tagaliases.contentgroup.md) + +## TagAliases.contentGroup property + +**Signature:** + +```typescript +contentGroup?: TagFrames.ContentGroup; +``` diff --git a/doc/node-id3.tagaliases.copyright.md b/doc/node-id3.tagaliases.copyright.md new file mode 100644 index 0000000..3657668 --- /dev/null +++ b/doc/node-id3.tagaliases.copyright.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [copyright](./node-id3.tagaliases.copyright.md) + +## TagAliases.copyright property + +**Signature:** + +```typescript +copyright?: TagFrames.Copyright; +``` diff --git a/doc/node-id3.tagaliases.copyrighturl.md b/doc/node-id3.tagaliases.copyrighturl.md new file mode 100644 index 0000000..bd081cc --- /dev/null +++ b/doc/node-id3.tagaliases.copyrighturl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [copyrightUrl](./node-id3.tagaliases.copyrighturl.md) + +## TagAliases.copyrightUrl property + +**Signature:** + +```typescript +copyrightUrl?: TagFrames.CopyrightUrl; +``` diff --git a/doc/node-id3.tagaliases.date.md b/doc/node-id3.tagaliases.date.md new file mode 100644 index 0000000..66976df --- /dev/null +++ b/doc/node-id3.tagaliases.date.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [date](./node-id3.tagaliases.date.md) + +## TagAliases.date property + +**Signature:** + +```typescript +date?: TagFrames.RecordingDate; +``` diff --git a/doc/node-id3.tagaliases.encodedby.md b/doc/node-id3.tagaliases.encodedby.md new file mode 100644 index 0000000..16c45e6 --- /dev/null +++ b/doc/node-id3.tagaliases.encodedby.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [encodedBy](./node-id3.tagaliases.encodedby.md) + +## TagAliases.encodedBy property + +**Signature:** + +```typescript +encodedBy?: TagFrames.EncodedBy; +``` diff --git a/doc/node-id3.tagaliases.encodingtechnology.md b/doc/node-id3.tagaliases.encodingtechnology.md new file mode 100644 index 0000000..fc03039 --- /dev/null +++ b/doc/node-id3.tagaliases.encodingtechnology.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [encodingTechnology](./node-id3.tagaliases.encodingtechnology.md) + +## TagAliases.encodingTechnology property + +**Signature:** + +```typescript +encodingTechnology?: TagFrames.EncodingTechnology; +``` diff --git a/doc/node-id3.tagaliases.encodingtime.md b/doc/node-id3.tagaliases.encodingtime.md new file mode 100644 index 0000000..917f14a --- /dev/null +++ b/doc/node-id3.tagaliases.encodingtime.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [encodingTime](./node-id3.tagaliases.encodingtime.md) + +## TagAliases.encodingTime property + +**Signature:** + +```typescript +encodingTime?: TagFrames.EncodingTime; +``` diff --git a/doc/node-id3.tagaliases.eventtimingcodes.md b/doc/node-id3.tagaliases.eventtimingcodes.md new file mode 100644 index 0000000..ef9ca97 --- /dev/null +++ b/doc/node-id3.tagaliases.eventtimingcodes.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [eventTimingCodes](./node-id3.tagaliases.eventtimingcodes.md) + +## TagAliases.eventTimingCodes property + +**Signature:** + +```typescript +eventTimingCodes?: TagFrames.EventTimingCodes; +``` diff --git a/doc/node-id3.tagaliases.fileowner.md b/doc/node-id3.tagaliases.fileowner.md new file mode 100644 index 0000000..59b1b61 --- /dev/null +++ b/doc/node-id3.tagaliases.fileowner.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [fileOwner](./node-id3.tagaliases.fileowner.md) + +## TagAliases.fileOwner property + +**Signature:** + +```typescript +fileOwner?: TagFrames.FileOwner; +``` diff --git a/doc/node-id3.tagaliases.filetype.md b/doc/node-id3.tagaliases.filetype.md new file mode 100644 index 0000000..a5abbc4 --- /dev/null +++ b/doc/node-id3.tagaliases.filetype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [fileType](./node-id3.tagaliases.filetype.md) + +## TagAliases.fileType property + +**Signature:** + +```typescript +fileType?: TagFrames.FileType; +``` diff --git a/doc/node-id3.tagaliases.fileurl.md b/doc/node-id3.tagaliases.fileurl.md new file mode 100644 index 0000000..db25daa --- /dev/null +++ b/doc/node-id3.tagaliases.fileurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [fileUrl](./node-id3.tagaliases.fileurl.md) + +## TagAliases.fileUrl property + +**Signature:** + +```typescript +fileUrl?: TagFrames.FileUrl; +``` diff --git a/doc/node-id3.tagaliases.genre.md b/doc/node-id3.tagaliases.genre.md new file mode 100644 index 0000000..bd542d2 --- /dev/null +++ b/doc/node-id3.tagaliases.genre.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [genre](./node-id3.tagaliases.genre.md) + +## TagAliases.genre property + +**Signature:** + +```typescript +genre?: TagFrames.Genre; +``` diff --git a/doc/node-id3.tagaliases.image.md b/doc/node-id3.tagaliases.image.md new file mode 100644 index 0000000..f3d627e --- /dev/null +++ b/doc/node-id3.tagaliases.image.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [image](./node-id3.tagaliases.image.md) + +## TagAliases.image property + +**Signature:** + +```typescript +image?: TagFrames.Image; +``` diff --git a/doc/node-id3.tagaliases.initialkey.md b/doc/node-id3.tagaliases.initialkey.md new file mode 100644 index 0000000..f5d33bb --- /dev/null +++ b/doc/node-id3.tagaliases.initialkey.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [initialKey](./node-id3.tagaliases.initialkey.md) + +## TagAliases.initialKey property + +**Signature:** + +```typescript +initialKey?: TagFrames.InitialKey; +``` diff --git a/doc/node-id3.tagaliases.internetradioname.md b/doc/node-id3.tagaliases.internetradioname.md new file mode 100644 index 0000000..7242985 --- /dev/null +++ b/doc/node-id3.tagaliases.internetradioname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [internetRadioName](./node-id3.tagaliases.internetradioname.md) + +## TagAliases.internetRadioName property + +**Signature:** + +```typescript +internetRadioName?: TagFrames.InternetRadioName; +``` diff --git a/doc/node-id3.tagaliases.internetradioowner.md b/doc/node-id3.tagaliases.internetradioowner.md new file mode 100644 index 0000000..e3d94ae --- /dev/null +++ b/doc/node-id3.tagaliases.internetradioowner.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [internetRadioOwner](./node-id3.tagaliases.internetradioowner.md) + +## TagAliases.internetRadioOwner property + +**Signature:** + +```typescript +internetRadioOwner?: TagFrames.InternetRadioOwner; +``` diff --git a/doc/node-id3.tagaliases.involvedpeoplelist.md b/doc/node-id3.tagaliases.involvedpeoplelist.md new file mode 100644 index 0000000..a543768 --- /dev/null +++ b/doc/node-id3.tagaliases.involvedpeoplelist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [involvedPeopleList](./node-id3.tagaliases.involvedpeoplelist.md) + +## TagAliases.involvedPeopleList property + +**Signature:** + +```typescript +involvedPeopleList?: TagFrames.InvolvedPeopleList; +``` diff --git a/doc/node-id3.tagaliases.isrc.md b/doc/node-id3.tagaliases.isrc.md new file mode 100644 index 0000000..52249e8 --- /dev/null +++ b/doc/node-id3.tagaliases.isrc.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [ISRC](./node-id3.tagaliases.isrc.md) + +## TagAliases.ISRC property + +**Signature:** + +```typescript +ISRC?: TagFrames.ISRC; +``` diff --git a/doc/node-id3.tagaliases.language.md b/doc/node-id3.tagaliases.language.md new file mode 100644 index 0000000..74e2aad --- /dev/null +++ b/doc/node-id3.tagaliases.language.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [language](./node-id3.tagaliases.language.md) + +## TagAliases.language property + +**Signature:** + +```typescript +language?: TagFrames.Language; +``` diff --git a/doc/node-id3.tagaliases.length.md b/doc/node-id3.tagaliases.length.md new file mode 100644 index 0000000..f2bbe7c --- /dev/null +++ b/doc/node-id3.tagaliases.length.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [length](./node-id3.tagaliases.length.md) + +## TagAliases.length property + +**Signature:** + +```typescript +length?: TagFrames.Length; +``` diff --git a/doc/node-id3.tagaliases.md b/doc/node-id3.tagaliases.md new file mode 100644 index 0000000..b0b206a --- /dev/null +++ b/doc/node-id3.tagaliases.md @@ -0,0 +1,90 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) + +## TagAliases interface + + +**Signature:** + +```typescript +export interface TagAliases +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [album?](./node-id3.tagaliases.album.md) | | [TagFrames.Album](./node-id3.tagframes.album.md) | _(Optional)_ | +| [albumSortOrder?](./node-id3.tagaliases.albumsortorder.md) | | [TagFrames.AlbumSortOrder](./node-id3.tagframes.albumsortorder.md) | _(Optional)_ | +| [artist?](./node-id3.tagaliases.artist.md) | | [TagFrames.Artist](./node-id3.tagframes.artist.md) | _(Optional)_ | +| [artistUrl?](./node-id3.tagaliases.artisturl.md) | | [TagFrames.ArtistUrl](./node-id3.tagframes.artisturl.md) | _(Optional)_ | +| [audioSourceUrl?](./node-id3.tagaliases.audiosourceurl.md) | | [TagFrames.AudioSourceUrl](./node-id3.tagframes.audiosourceurl.md) | _(Optional)_ | +| [bpm?](./node-id3.tagaliases.bpm.md) | | [TagFrames.Bpm](./node-id3.tagframes.bpm.md) | _(Optional)_ | +| [chapter?](./node-id3.tagaliases.chapter.md) | | [TagFrames.Chapter](./node-id3.tagframes.chapter.md)<[Tags](./node-id3.tags.md)>\[\] | _(Optional)_ | +| [comment?](./node-id3.tagaliases.comment.md) | | [TagFrames.Comment](./node-id3.tagframes.comment.md) | _(Optional)_ | +| [commercialFrame?](./node-id3.tagaliases.commercialframe.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.CommercialFrame](./node-id3.tagframes.commercialframe.md)> | _(Optional)_ | +| [commercialUrl?](./node-id3.tagaliases.commercialurl.md) | | [TagFrames.CommercialUrl](./node-id3.tagframes.commercialurl.md) | _(Optional)_ | +| [composer?](./node-id3.tagaliases.composer.md) | | [TagFrames.Composer](./node-id3.tagframes.composer.md) | _(Optional)_ | +| [conductor?](./node-id3.tagaliases.conductor.md) | | [TagFrames.Conductor](./node-id3.tagframes.conductor.md) | _(Optional)_ | +| [contentGroup?](./node-id3.tagaliases.contentgroup.md) | | [TagFrames.ContentGroup](./node-id3.tagframes.contentgroup.md) | _(Optional)_ | +| [copyright?](./node-id3.tagaliases.copyright.md) | | [TagFrames.Copyright](./node-id3.tagframes.copyright.md) | _(Optional)_ | +| [copyrightUrl?](./node-id3.tagaliases.copyrighturl.md) | | [TagFrames.CopyrightUrl](./node-id3.tagframes.copyrighturl.md) | _(Optional)_ | +| [date?](./node-id3.tagaliases.date.md) | | [TagFrames.RecordingDate](./node-id3.tagframes.recordingdate.md) | _(Optional)_ | +| [encodedBy?](./node-id3.tagaliases.encodedby.md) | | [TagFrames.EncodedBy](./node-id3.tagframes.encodedby.md) | _(Optional)_ | +| [encodingTechnology?](./node-id3.tagaliases.encodingtechnology.md) | | [TagFrames.EncodingTechnology](./node-id3.tagframes.encodingtechnology.md) | _(Optional)_ | +| [encodingTime?](./node-id3.tagaliases.encodingtime.md) | | [TagFrames.EncodingTime](./node-id3.tagframes.encodingtime.md) | _(Optional)_ | +| [eventTimingCodes?](./node-id3.tagaliases.eventtimingcodes.md) | | [TagFrames.EventTimingCodes](./node-id3.tagframes.eventtimingcodes.md) | _(Optional)_ | +| [fileOwner?](./node-id3.tagaliases.fileowner.md) | | [TagFrames.FileOwner](./node-id3.tagframes.fileowner.md) | _(Optional)_ | +| [fileType?](./node-id3.tagaliases.filetype.md) | | [TagFrames.FileType](./node-id3.tagframes.filetype.md) | _(Optional)_ | +| [fileUrl?](./node-id3.tagaliases.fileurl.md) | | [TagFrames.FileUrl](./node-id3.tagframes.fileurl.md) | _(Optional)_ | +| [genre?](./node-id3.tagaliases.genre.md) | | [TagFrames.Genre](./node-id3.tagframes.genre.md) | _(Optional)_ | +| [image?](./node-id3.tagaliases.image.md) | | [TagFrames.Image](./node-id3.tagframes.image.md) | _(Optional)_ | +| [initialKey?](./node-id3.tagaliases.initialkey.md) | | [TagFrames.InitialKey](./node-id3.tagframes.initialkey.md) | _(Optional)_ | +| [internetRadioName?](./node-id3.tagaliases.internetradioname.md) | | [TagFrames.InternetRadioName](./node-id3.tagframes.internetradioname.md) | _(Optional)_ | +| [internetRadioOwner?](./node-id3.tagaliases.internetradioowner.md) | | [TagFrames.InternetRadioOwner](./node-id3.tagframes.internetradioowner.md) | _(Optional)_ | +| [involvedPeopleList?](./node-id3.tagaliases.involvedpeoplelist.md) | | [TagFrames.InvolvedPeopleList](./node-id3.tagframes.involvedpeoplelist.md) | _(Optional)_ | +| [ISRC?](./node-id3.tagaliases.isrc.md) | | [TagFrames.ISRC](./node-id3.tagframes.isrc.md) | _(Optional)_ | +| [language?](./node-id3.tagaliases.language.md) | | [TagFrames.Language](./node-id3.tagframes.language.md) | _(Optional)_ | +| [length?](./node-id3.tagaliases.length.md) | | [TagFrames.Length](./node-id3.tagframes.length.md) | _(Optional)_ | +| [mediaType?](./node-id3.tagaliases.mediatype.md) | | [TagFrames.MediaType](./node-id3.tagframes.mediatype.md) | _(Optional)_ | +| [mood?](./node-id3.tagaliases.mood.md) | | [TagFrames.Mood](./node-id3.tagframes.mood.md) | _(Optional)_ | +| [musicianCreditsList?](./node-id3.tagaliases.musiciancreditslist.md) | | [TagFrames.MusicianCreditsList](./node-id3.tagframes.musiciancreditslist.md) | _(Optional)_ | +| [originalArtist?](./node-id3.tagaliases.originalartist.md) | | [TagFrames.OriginalArtist](./node-id3.tagframes.originalartist.md) | _(Optional)_ | +| [originalFilename?](./node-id3.tagaliases.originalfilename.md) | | [TagFrames.OriginalFilename](./node-id3.tagframes.originalfilename.md) | _(Optional)_ | +| [originalReleaseTime?](./node-id3.tagaliases.originalreleasetime.md) | | [TagFrames.OriginalReleaseTime](./node-id3.tagframes.originalreleasetime.md) | _(Optional)_ | +| [originalTextwriter?](./node-id3.tagaliases.originaltextwriter.md) | | [TagFrames.OriginalTextwriter](./node-id3.tagframes.originaltextwriter.md) | _(Optional)_ | +| [originalTitle?](./node-id3.tagaliases.originaltitle.md) | | [TagFrames.OriginalTitle](./node-id3.tagframes.originaltitle.md) | _(Optional)_ | +| [originalYear?](./node-id3.tagaliases.originalyear.md) | | [TagFrames.OriginalYear](./node-id3.tagframes.originalyear.md) | _(Optional)_ | +| [partOfSet?](./node-id3.tagaliases.partofset.md) | | [TagFrames.PartOfSet](./node-id3.tagframes.partofset.md) | _(Optional)_ | +| [paymentUrl?](./node-id3.tagaliases.paymenturl.md) | | [TagFrames.PaymentUrl](./node-id3.tagframes.paymenturl.md) | _(Optional)_ | +| [performerInfo?](./node-id3.tagaliases.performerinfo.md) | | [TagFrames.PerformerInfo](./node-id3.tagframes.performerinfo.md) | _(Optional)_ | +| [performerSortOrder?](./node-id3.tagaliases.performersortorder.md) | | [TagFrames.PerformerSortOrder](./node-id3.tagframes.performersortorder.md) | _(Optional)_ | +| [playlistDelay?](./node-id3.tagaliases.playlistdelay.md) | | [TagFrames.PlaylistDelay](./node-id3.tagframes.playlistdelay.md) | _(Optional)_ | +| [popularimeter?](./node-id3.tagaliases.popularimeter.md) | | [TagFrames.Popularimeter](./node-id3.tagframes.popularimeter.md) | _(Optional)_ | +| [private?](./node-id3.tagaliases.private.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.Private](./node-id3.tagframes.private.md)> | _(Optional)_ | +| [producedNotice?](./node-id3.tagaliases.producednotice.md) | | [TagFrames.ProducedNotice](./node-id3.tagframes.producednotice.md) | _(Optional)_ | +| [publisher?](./node-id3.tagaliases.publisher.md) | | [TagFrames.Publisher](./node-id3.tagframes.publisher.md) | _(Optional)_ | +| [publisherUrl?](./node-id3.tagaliases.publisherurl.md) | | [TagFrames.PublisherUrl](./node-id3.tagframes.publisherurl.md) | _(Optional)_ | +| [radioStationUrl?](./node-id3.tagaliases.radiostationurl.md) | | [TagFrames.RadioStationUrl](./node-id3.tagframes.radiostationurl.md) | _(Optional)_ | +| [recordingDates?](./node-id3.tagaliases.recordingdates.md) | | [TagFrames.RecordingDates](./node-id3.tagframes.recordingdates.md) | _(Optional)_ | +| [recordingTime?](./node-id3.tagaliases.recordingtime.md) | | [TagFrames.RecordingTime](./node-id3.tagframes.recordingtime.md) | _(Optional)_ | +| [releaseTime?](./node-id3.tagaliases.releasetime.md) | | [TagFrames.ReleaseTime](./node-id3.tagframes.releasetime.md) | _(Optional)_ | +| [remixArtist?](./node-id3.tagaliases.remixartist.md) | | [TagFrames.RemixArtist](./node-id3.tagframes.remixartist.md) | _(Optional)_ | +| [setSubtitle?](./node-id3.tagaliases.setsubtitle.md) | | [TagFrames.SetSubtitle](./node-id3.tagframes.setsubtitle.md) | _(Optional)_ | +| [size?](./node-id3.tagaliases.size.md) | | [TagFrames.Size](./node-id3.tagframes.size.md) | _(Optional)_ | +| [subtitle?](./node-id3.tagaliases.subtitle.md) | | [TagFrames.Subtitle](./node-id3.tagframes.subtitle.md) | _(Optional)_ | +| [synchronisedLyrics?](./node-id3.tagaliases.synchronisedlyrics.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md)> | _(Optional)_ | +| [tableOfContents?](./node-id3.tagaliases.tableofcontents.md) | | [TagFrames.TableOfContents](./node-id3.tagframes.tableofcontents.md)<[Tags](./node-id3.tags.md)>\[\] | _(Optional)_ | +| [taggingTime?](./node-id3.tagaliases.taggingtime.md) | | [TagFrames.TaggingTime](./node-id3.tagframes.taggingtime.md) | _(Optional)_ | +| [textWriter?](./node-id3.tagaliases.textwriter.md) | | [TagFrames.TextWriter](./node-id3.tagframes.textwriter.md) | _(Optional)_ | +| [time?](./node-id3.tagaliases.time.md) | | [TagFrames.Time](./node-id3.tagframes.time.md) | _(Optional)_ | +| [title?](./node-id3.tagaliases.title.md) | | [TagFrames.Title](./node-id3.tagframes.title.md) | _(Optional)_ | +| [titleSortOrder?](./node-id3.tagaliases.titlesortorder.md) | | [TagFrames.TitleSortOrder](./node-id3.tagframes.titlesortorder.md) | _(Optional)_ | +| [trackNumber?](./node-id3.tagaliases.tracknumber.md) | | [TagFrames.TrackNumber](./node-id3.tagframes.tracknumber.md) | _(Optional)_ | +| [uniqueFileIdentifier?](./node-id3.tagaliases.uniquefileidentifier.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.UniqueFileIdentifier](./node-id3.tagframes.uniquefileidentifier.md)> | _(Optional)_ | +| [unsynchronisedLyrics?](./node-id3.tagaliases.unsynchronisedlyrics.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md)> | _(Optional)_ | +| [userDefinedText?](./node-id3.tagaliases.userdefinedtext.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.UserDefinedText](./node-id3.tagframes.userdefinedtext.md)> | _(Optional)_ | +| [userDefinedUrl?](./node-id3.tagaliases.userdefinedurl.md) | | [TypeOrTypeArray](./node-id3.typeortypearray.md)<[TagFrames.UserDefinedUrl](./node-id3.tagframes.userdefinedurl.md)> | _(Optional)_ | +| [year?](./node-id3.tagaliases.year.md) | | [TagFrames.Year](./node-id3.tagframes.year.md) | _(Optional)_ | + diff --git a/doc/node-id3.tagaliases.mediatype.md b/doc/node-id3.tagaliases.mediatype.md new file mode 100644 index 0000000..6cbdf51 --- /dev/null +++ b/doc/node-id3.tagaliases.mediatype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [mediaType](./node-id3.tagaliases.mediatype.md) + +## TagAliases.mediaType property + +**Signature:** + +```typescript +mediaType?: TagFrames.MediaType; +``` diff --git a/doc/node-id3.tagaliases.mood.md b/doc/node-id3.tagaliases.mood.md new file mode 100644 index 0000000..d0c5450 --- /dev/null +++ b/doc/node-id3.tagaliases.mood.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [mood](./node-id3.tagaliases.mood.md) + +## TagAliases.mood property + +**Signature:** + +```typescript +mood?: TagFrames.Mood; +``` diff --git a/doc/node-id3.tagaliases.musiciancreditslist.md b/doc/node-id3.tagaliases.musiciancreditslist.md new file mode 100644 index 0000000..ab8ca01 --- /dev/null +++ b/doc/node-id3.tagaliases.musiciancreditslist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [musicianCreditsList](./node-id3.tagaliases.musiciancreditslist.md) + +## TagAliases.musicianCreditsList property + +**Signature:** + +```typescript +musicianCreditsList?: TagFrames.MusicianCreditsList; +``` diff --git a/doc/node-id3.tagaliases.originalartist.md b/doc/node-id3.tagaliases.originalartist.md new file mode 100644 index 0000000..778f0d7 --- /dev/null +++ b/doc/node-id3.tagaliases.originalartist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalArtist](./node-id3.tagaliases.originalartist.md) + +## TagAliases.originalArtist property + +**Signature:** + +```typescript +originalArtist?: TagFrames.OriginalArtist; +``` diff --git a/doc/node-id3.tagaliases.originalfilename.md b/doc/node-id3.tagaliases.originalfilename.md new file mode 100644 index 0000000..2218d0c --- /dev/null +++ b/doc/node-id3.tagaliases.originalfilename.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalFilename](./node-id3.tagaliases.originalfilename.md) + +## TagAliases.originalFilename property + +**Signature:** + +```typescript +originalFilename?: TagFrames.OriginalFilename; +``` diff --git a/doc/node-id3.tagaliases.originalreleasetime.md b/doc/node-id3.tagaliases.originalreleasetime.md new file mode 100644 index 0000000..2e83682 --- /dev/null +++ b/doc/node-id3.tagaliases.originalreleasetime.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalReleaseTime](./node-id3.tagaliases.originalreleasetime.md) + +## TagAliases.originalReleaseTime property + +**Signature:** + +```typescript +originalReleaseTime?: TagFrames.OriginalReleaseTime; +``` diff --git a/doc/node-id3.tagaliases.originaltextwriter.md b/doc/node-id3.tagaliases.originaltextwriter.md new file mode 100644 index 0000000..2365514 --- /dev/null +++ b/doc/node-id3.tagaliases.originaltextwriter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalTextwriter](./node-id3.tagaliases.originaltextwriter.md) + +## TagAliases.originalTextwriter property + +**Signature:** + +```typescript +originalTextwriter?: TagFrames.OriginalTextwriter; +``` diff --git a/doc/node-id3.tagaliases.originaltitle.md b/doc/node-id3.tagaliases.originaltitle.md new file mode 100644 index 0000000..6047e8a --- /dev/null +++ b/doc/node-id3.tagaliases.originaltitle.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalTitle](./node-id3.tagaliases.originaltitle.md) + +## TagAliases.originalTitle property + +**Signature:** + +```typescript +originalTitle?: TagFrames.OriginalTitle; +``` diff --git a/doc/node-id3.tagaliases.originalyear.md b/doc/node-id3.tagaliases.originalyear.md new file mode 100644 index 0000000..cfbc010 --- /dev/null +++ b/doc/node-id3.tagaliases.originalyear.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [originalYear](./node-id3.tagaliases.originalyear.md) + +## TagAliases.originalYear property + +**Signature:** + +```typescript +originalYear?: TagFrames.OriginalYear; +``` diff --git a/doc/node-id3.tagaliases.partofset.md b/doc/node-id3.tagaliases.partofset.md new file mode 100644 index 0000000..ec1ca52 --- /dev/null +++ b/doc/node-id3.tagaliases.partofset.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [partOfSet](./node-id3.tagaliases.partofset.md) + +## TagAliases.partOfSet property + +**Signature:** + +```typescript +partOfSet?: TagFrames.PartOfSet; +``` diff --git a/doc/node-id3.tagaliases.paymenturl.md b/doc/node-id3.tagaliases.paymenturl.md new file mode 100644 index 0000000..eac2a86 --- /dev/null +++ b/doc/node-id3.tagaliases.paymenturl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [paymentUrl](./node-id3.tagaliases.paymenturl.md) + +## TagAliases.paymentUrl property + +**Signature:** + +```typescript +paymentUrl?: TagFrames.PaymentUrl; +``` diff --git a/doc/node-id3.tagaliases.performerinfo.md b/doc/node-id3.tagaliases.performerinfo.md new file mode 100644 index 0000000..a1f3d13 --- /dev/null +++ b/doc/node-id3.tagaliases.performerinfo.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [performerInfo](./node-id3.tagaliases.performerinfo.md) + +## TagAliases.performerInfo property + +**Signature:** + +```typescript +performerInfo?: TagFrames.PerformerInfo; +``` diff --git a/doc/node-id3.tagaliases.performersortorder.md b/doc/node-id3.tagaliases.performersortorder.md new file mode 100644 index 0000000..bcbe6fd --- /dev/null +++ b/doc/node-id3.tagaliases.performersortorder.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [performerSortOrder](./node-id3.tagaliases.performersortorder.md) + +## TagAliases.performerSortOrder property + +**Signature:** + +```typescript +performerSortOrder?: TagFrames.PerformerSortOrder; +``` diff --git a/doc/node-id3.tagaliases.playlistdelay.md b/doc/node-id3.tagaliases.playlistdelay.md new file mode 100644 index 0000000..33e0378 --- /dev/null +++ b/doc/node-id3.tagaliases.playlistdelay.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [playlistDelay](./node-id3.tagaliases.playlistdelay.md) + +## TagAliases.playlistDelay property + +**Signature:** + +```typescript +playlistDelay?: TagFrames.PlaylistDelay; +``` diff --git a/doc/node-id3.tagaliases.popularimeter.md b/doc/node-id3.tagaliases.popularimeter.md new file mode 100644 index 0000000..9ce8e8a --- /dev/null +++ b/doc/node-id3.tagaliases.popularimeter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [popularimeter](./node-id3.tagaliases.popularimeter.md) + +## TagAliases.popularimeter property + +**Signature:** + +```typescript +popularimeter?: TagFrames.Popularimeter; +``` diff --git a/doc/node-id3.tagaliases.private.md b/doc/node-id3.tagaliases.private.md new file mode 100644 index 0000000..ddc818c --- /dev/null +++ b/doc/node-id3.tagaliases.private.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [private](./node-id3.tagaliases.private.md) + +## TagAliases.private property + +**Signature:** + +```typescript +private?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.producednotice.md b/doc/node-id3.tagaliases.producednotice.md new file mode 100644 index 0000000..bdd72e7 --- /dev/null +++ b/doc/node-id3.tagaliases.producednotice.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [producedNotice](./node-id3.tagaliases.producednotice.md) + +## TagAliases.producedNotice property + +**Signature:** + +```typescript +producedNotice?: TagFrames.ProducedNotice; +``` diff --git a/doc/node-id3.tagaliases.publisher.md b/doc/node-id3.tagaliases.publisher.md new file mode 100644 index 0000000..0a5758f --- /dev/null +++ b/doc/node-id3.tagaliases.publisher.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [publisher](./node-id3.tagaliases.publisher.md) + +## TagAliases.publisher property + +**Signature:** + +```typescript +publisher?: TagFrames.Publisher; +``` diff --git a/doc/node-id3.tagaliases.publisherurl.md b/doc/node-id3.tagaliases.publisherurl.md new file mode 100644 index 0000000..4b529a3 --- /dev/null +++ b/doc/node-id3.tagaliases.publisherurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [publisherUrl](./node-id3.tagaliases.publisherurl.md) + +## TagAliases.publisherUrl property + +**Signature:** + +```typescript +publisherUrl?: TagFrames.PublisherUrl; +``` diff --git a/doc/node-id3.tagaliases.radiostationurl.md b/doc/node-id3.tagaliases.radiostationurl.md new file mode 100644 index 0000000..b7b9d9b --- /dev/null +++ b/doc/node-id3.tagaliases.radiostationurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [radioStationUrl](./node-id3.tagaliases.radiostationurl.md) + +## TagAliases.radioStationUrl property + +**Signature:** + +```typescript +radioStationUrl?: TagFrames.RadioStationUrl; +``` diff --git a/doc/node-id3.tagaliases.recordingdates.md b/doc/node-id3.tagaliases.recordingdates.md new file mode 100644 index 0000000..ff1422e --- /dev/null +++ b/doc/node-id3.tagaliases.recordingdates.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [recordingDates](./node-id3.tagaliases.recordingdates.md) + +## TagAliases.recordingDates property + +**Signature:** + +```typescript +recordingDates?: TagFrames.RecordingDates; +``` diff --git a/doc/node-id3.tagaliases.recordingtime.md b/doc/node-id3.tagaliases.recordingtime.md new file mode 100644 index 0000000..aecb361 --- /dev/null +++ b/doc/node-id3.tagaliases.recordingtime.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [recordingTime](./node-id3.tagaliases.recordingtime.md) + +## TagAliases.recordingTime property + +**Signature:** + +```typescript +recordingTime?: TagFrames.RecordingTime; +``` diff --git a/doc/node-id3.tagaliases.releasetime.md b/doc/node-id3.tagaliases.releasetime.md new file mode 100644 index 0000000..1eb7691 --- /dev/null +++ b/doc/node-id3.tagaliases.releasetime.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [releaseTime](./node-id3.tagaliases.releasetime.md) + +## TagAliases.releaseTime property + +**Signature:** + +```typescript +releaseTime?: TagFrames.ReleaseTime; +``` diff --git a/doc/node-id3.tagaliases.remixartist.md b/doc/node-id3.tagaliases.remixartist.md new file mode 100644 index 0000000..9a27771 --- /dev/null +++ b/doc/node-id3.tagaliases.remixartist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [remixArtist](./node-id3.tagaliases.remixartist.md) + +## TagAliases.remixArtist property + +**Signature:** + +```typescript +remixArtist?: TagFrames.RemixArtist; +``` diff --git a/doc/node-id3.tagaliases.setsubtitle.md b/doc/node-id3.tagaliases.setsubtitle.md new file mode 100644 index 0000000..1179beb --- /dev/null +++ b/doc/node-id3.tagaliases.setsubtitle.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [setSubtitle](./node-id3.tagaliases.setsubtitle.md) + +## TagAliases.setSubtitle property + +**Signature:** + +```typescript +setSubtitle?: TagFrames.SetSubtitle; +``` diff --git a/doc/node-id3.tagaliases.size.md b/doc/node-id3.tagaliases.size.md new file mode 100644 index 0000000..3ca5996 --- /dev/null +++ b/doc/node-id3.tagaliases.size.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [size](./node-id3.tagaliases.size.md) + +## TagAliases.size property + +**Signature:** + +```typescript +size?: TagFrames.Size; +``` diff --git a/doc/node-id3.tagaliases.subtitle.md b/doc/node-id3.tagaliases.subtitle.md new file mode 100644 index 0000000..e012971 --- /dev/null +++ b/doc/node-id3.tagaliases.subtitle.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [subtitle](./node-id3.tagaliases.subtitle.md) + +## TagAliases.subtitle property + +**Signature:** + +```typescript +subtitle?: TagFrames.Subtitle; +``` diff --git a/doc/node-id3.tagaliases.synchronisedlyrics.md b/doc/node-id3.tagaliases.synchronisedlyrics.md new file mode 100644 index 0000000..c26bfe1 --- /dev/null +++ b/doc/node-id3.tagaliases.synchronisedlyrics.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [synchronisedLyrics](./node-id3.tagaliases.synchronisedlyrics.md) + +## TagAliases.synchronisedLyrics property + +**Signature:** + +```typescript +synchronisedLyrics?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.tableofcontents.md b/doc/node-id3.tagaliases.tableofcontents.md new file mode 100644 index 0000000..7df309d --- /dev/null +++ b/doc/node-id3.tagaliases.tableofcontents.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [tableOfContents](./node-id3.tagaliases.tableofcontents.md) + +## TagAliases.tableOfContents property + +**Signature:** + +```typescript +tableOfContents?: TagFrames.TableOfContents[]; +``` diff --git a/doc/node-id3.tagaliases.taggingtime.md b/doc/node-id3.tagaliases.taggingtime.md new file mode 100644 index 0000000..6cd88a1 --- /dev/null +++ b/doc/node-id3.tagaliases.taggingtime.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [taggingTime](./node-id3.tagaliases.taggingtime.md) + +## TagAliases.taggingTime property + +**Signature:** + +```typescript +taggingTime?: TagFrames.TaggingTime; +``` diff --git a/doc/node-id3.tagaliases.textwriter.md b/doc/node-id3.tagaliases.textwriter.md new file mode 100644 index 0000000..4925cb9 --- /dev/null +++ b/doc/node-id3.tagaliases.textwriter.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [textWriter](./node-id3.tagaliases.textwriter.md) + +## TagAliases.textWriter property + +**Signature:** + +```typescript +textWriter?: TagFrames.TextWriter; +``` diff --git a/doc/node-id3.tagaliases.time.md b/doc/node-id3.tagaliases.time.md new file mode 100644 index 0000000..e8248d7 --- /dev/null +++ b/doc/node-id3.tagaliases.time.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [time](./node-id3.tagaliases.time.md) + +## TagAliases.time property + +**Signature:** + +```typescript +time?: TagFrames.Time; +``` diff --git a/doc/node-id3.tagaliases.title.md b/doc/node-id3.tagaliases.title.md new file mode 100644 index 0000000..869aa91 --- /dev/null +++ b/doc/node-id3.tagaliases.title.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [title](./node-id3.tagaliases.title.md) + +## TagAliases.title property + +**Signature:** + +```typescript +title?: TagFrames.Title; +``` diff --git a/doc/node-id3.tagaliases.titlesortorder.md b/doc/node-id3.tagaliases.titlesortorder.md new file mode 100644 index 0000000..f8bdc25 --- /dev/null +++ b/doc/node-id3.tagaliases.titlesortorder.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [titleSortOrder](./node-id3.tagaliases.titlesortorder.md) + +## TagAliases.titleSortOrder property + +**Signature:** + +```typescript +titleSortOrder?: TagFrames.TitleSortOrder; +``` diff --git a/doc/node-id3.tagaliases.tracknumber.md b/doc/node-id3.tagaliases.tracknumber.md new file mode 100644 index 0000000..312ae18 --- /dev/null +++ b/doc/node-id3.tagaliases.tracknumber.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [trackNumber](./node-id3.tagaliases.tracknumber.md) + +## TagAliases.trackNumber property + +**Signature:** + +```typescript +trackNumber?: TagFrames.TrackNumber; +``` diff --git a/doc/node-id3.tagaliases.uniquefileidentifier.md b/doc/node-id3.tagaliases.uniquefileidentifier.md new file mode 100644 index 0000000..6b902d2 --- /dev/null +++ b/doc/node-id3.tagaliases.uniquefileidentifier.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [uniqueFileIdentifier](./node-id3.tagaliases.uniquefileidentifier.md) + +## TagAliases.uniqueFileIdentifier property + +**Signature:** + +```typescript +uniqueFileIdentifier?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.unsynchronisedlyrics.md b/doc/node-id3.tagaliases.unsynchronisedlyrics.md new file mode 100644 index 0000000..469a5ac --- /dev/null +++ b/doc/node-id3.tagaliases.unsynchronisedlyrics.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [unsynchronisedLyrics](./node-id3.tagaliases.unsynchronisedlyrics.md) + +## TagAliases.unsynchronisedLyrics property + +**Signature:** + +```typescript +unsynchronisedLyrics?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.userdefinedtext.md b/doc/node-id3.tagaliases.userdefinedtext.md new file mode 100644 index 0000000..f8a419b --- /dev/null +++ b/doc/node-id3.tagaliases.userdefinedtext.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [userDefinedText](./node-id3.tagaliases.userdefinedtext.md) + +## TagAliases.userDefinedText property + +**Signature:** + +```typescript +userDefinedText?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.userdefinedurl.md b/doc/node-id3.tagaliases.userdefinedurl.md new file mode 100644 index 0000000..c3b2c2f --- /dev/null +++ b/doc/node-id3.tagaliases.userdefinedurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [userDefinedUrl](./node-id3.tagaliases.userdefinedurl.md) + +## TagAliases.userDefinedUrl property + +**Signature:** + +```typescript +userDefinedUrl?: TypeOrTypeArray; +``` diff --git a/doc/node-id3.tagaliases.year.md b/doc/node-id3.tagaliases.year.md new file mode 100644 index 0000000..62b74d7 --- /dev/null +++ b/doc/node-id3.tagaliases.year.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagAliases](./node-id3.tagaliases.md) > [year](./node-id3.tagaliases.year.md) + +## TagAliases.year property + +**Signature:** + +```typescript +year?: TagFrames.Year; +``` diff --git a/doc/node-id3.tagconstants.md b/doc/node-id3.tagconstants.md new file mode 100644 index 0000000..0babbfe --- /dev/null +++ b/doc/node-id3.tagconstants.md @@ -0,0 +1,98 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagConstants](./node-id3.tagconstants.md) + +## TagConstants variable + +Constants documented in the id3 specifications used in tag frames. + +**Signature:** + +```typescript +TagConstants: { + readonly TimeStampFormat: { + readonly MPEG_FRAMES: 1; + readonly MILLISECONDS: 2; + }; + readonly EventTimingCodes: { + readonly EventType: { + readonly PADDING: 0; + readonly END_OF_INITIAL_SILENCE: 1; + readonly INTRO_START: 2; + readonly MAINPART_START: 3; + readonly OUTRO_START: 4; + readonly OUTRO_END: 5; + readonly VERSE_START: 6; + readonly REFRAIN_START: 7; + readonly INTERLUDE_START: 8; + readonly THEME_START: 9; + readonly VARIATION_START: 10; + readonly KEY_CHANGE: 11; + readonly TIME_CHANGE: 12; + readonly MOMENTARY_UNWANTED_NOISE: 13; + readonly SUSTAINED_NOISE: 14; + readonly SUSTAINED_NOISE_END: 15; + readonly INTRO_END: 16; + readonly MAINPART_END: 17; + readonly VERSE_END: 18; + readonly REFRAIN_END: 19; + readonly THEME_END: 20; + readonly RESERVED_1: 21; + readonly NOT_PREDEFINED_SYNC: 224; + readonly RESERVED_2: 240; + readonly AUDIO_END: 253; + readonly AUDIO_FILE_ENDS: 254; + readonly ONE_MORE_BYTE_FOLLOWS: 255; + }; + }; + readonly SynchronisedLyrics: { + readonly ContentType: { + readonly OTHER: 0; + readonly LYRICS: 1; + readonly TEXT_TRANSCRIPTION: 2; + readonly MOVEMENT_OR_PART_NAME: 3; + readonly EVENTS: 4; + readonly CHORD: 5; + readonly TRIVIA_OR_POP_UP_INFORMATION: 6; + }; + }; + readonly AttachedPicture: { + readonly PictureType: { + readonly OTHER: 0; + readonly FILE_ICON: 1; + readonly OTHER_FILE_ICON: 2; + readonly FRONT_COVER: 3; + readonly BACK_COVER: 4; + readonly LEAFLET_PAGE: 5; + readonly MEDIA: 6; + readonly LEAD_ARTIST: 7; + readonly ARTIST_OR_PERFORMER: 8; + readonly CONDUCTOR: 9; + readonly BAND_OR_ORCHESTRA: 10; + readonly COMPOSER: 11; + readonly LYRICIST_OR_TEXT_WRITER: 12; + readonly RECORDING_LOCATION: 13; + readonly DURING_RECORDING: 14; + readonly DURING_PERFORMANCE: 15; + readonly MOVIE_OR_VIDEO_SCREEN_CAPTURE: 16; + readonly A_BRIGHT_COLOURED_FISH: 17; + readonly ILLUSTRATION: 18; + readonly BAND_OR_ARTIST_LOGOTYPE: 19; + readonly PUBLISHER_OR_STUDIO_LOGOTYPE: 20; + }; + }; + readonly CommercialFrame: { + readonly ReceivedAs: { + readonly OTHER: 0; + readonly STANDARD_CD_ALBUM_WITH_OTHER_SONGS: 1; + readonly COMPRESSED_AUDIO_ON_CD: 2; + readonly FILE_OVER_THE_INTERNET: 3; + readonly STREAM_OVER_THE_INTERNET: 4; + readonly AS_NOTE_SHEETS: 5; + readonly AS_NOTE_SHEETS_IN_A_BOOK_WITH_OTHER_SHEETS: 6; + readonly MUSIC_ON_OTHER_MEDIA: 7; + readonly NON_MUSICAL_MERCHANDISE: 8; + }; + }; +} +``` diff --git a/doc/node-id3.tagframes.album.md b/doc/node-id3.tagframes.album.md new file mode 100644 index 0000000..eb437a0 --- /dev/null +++ b/doc/node-id3.tagframes.album.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Album](./node-id3.tagframes.album.md) + +## TagFrames.Album type + +The 'Album/Movie/Show title' frame is intended for the title of the recording(/source of sound) which the audio in the file is taken from. + +**Signature:** + +```typescript +export type Album = string; +``` diff --git a/doc/node-id3.tagframes.albumsortorder.md b/doc/node-id3.tagframes.albumsortorder.md new file mode 100644 index 0000000..10c9cd9 --- /dev/null +++ b/doc/node-id3.tagframes.albumsortorder.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [AlbumSortOrder](./node-id3.tagframes.albumsortorder.md) + +## TagFrames.AlbumSortOrder type + +The 'Album sort order' frame defines a string which should be used instead of the album name (TALB) for sorting purposes. E.g. an album named "A Soundtrack" might preferably be sorted as "Soundtrack". + +**Signature:** + +```typescript +export type AlbumSortOrder = string; +``` diff --git a/doc/node-id3.tagframes.artist.md b/doc/node-id3.tagframes.artist.md new file mode 100644 index 0000000..85eb8a1 --- /dev/null +++ b/doc/node-id3.tagframes.artist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Artist](./node-id3.tagframes.artist.md) + +## TagFrames.Artist type + +The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. + +**Signature:** + +```typescript +export type Artist = string; +``` diff --git a/doc/node-id3.tagframes.artisturl.md b/doc/node-id3.tagframes.artisturl.md new file mode 100644 index 0000000..e22fa6e --- /dev/null +++ b/doc/node-id3.tagframes.artisturl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [ArtistUrl](./node-id3.tagframes.artisturl.md) + +## TagFrames.ArtistUrl type + +The 'Official artist/performer webpage' frame is a URL pointing at the artists official webpage. There may be more than one "WOAR" frame in a tag if the audio contains more than one performer, but not with the same content. + +**Signature:** + +```typescript +export type ArtistUrl = string[]; +``` diff --git a/doc/node-id3.tagframes.audiosourceurl.md b/doc/node-id3.tagframes.audiosourceurl.md new file mode 100644 index 0000000..e62f145 --- /dev/null +++ b/doc/node-id3.tagframes.audiosourceurl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [AudioSourceUrl](./node-id3.tagframes.audiosourceurl.md) + +## TagFrames.AudioSourceUrl type + +The 'Official audio source webpage' frame is a URL pointing at the official webpage for the source of the audio file, e.g. a movie. + +**Signature:** + +```typescript +export type AudioSourceUrl = string; +``` diff --git a/doc/node-id3.tagframes.bpm.md b/doc/node-id3.tagframes.bpm.md new file mode 100644 index 0000000..1685615 --- /dev/null +++ b/doc/node-id3.tagframes.bpm.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Bpm](./node-id3.tagframes.bpm.md) + +## TagFrames.Bpm type + +The 'BPM' frame contains the number of beats per minute in the mainpart of the audio. The BPM is an integer and represented as a numerical string. + +**Signature:** + +```typescript +export type Bpm = string; +``` diff --git a/doc/node-id3.tagframes.chapter.md b/doc/node-id3.tagframes.chapter.md new file mode 100644 index 0000000..70a2a6f --- /dev/null +++ b/doc/node-id3.tagframes.chapter.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Chapter](./node-id3.tagframes.chapter.md) + +## TagFrames.Chapter type + +The purpose of this frame is to describe a single chapter within an audio file. There may be more than one frame of this type in a tag but each must have an Element ID that is unique with respect to any other "CHAP" frame or "CTOC" frame in the tag. + +**Signature:** + +```typescript +export type Chapter = { + elementID: string; + endTimeMs: number; + startTimeMs: number; + startOffsetBytes?: number; + endOffsetBytes?: number; + tags?: Tags; +}; +``` diff --git a/doc/node-id3.tagframes.comment.md b/doc/node-id3.tagframes.comment.md new file mode 100644 index 0000000..4c326b3 --- /dev/null +++ b/doc/node-id3.tagframes.comment.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Comment](./node-id3.tagframes.comment.md) + +## TagFrames.Comment type + + +**Signature:** + +```typescript +export type Comment = { + language: string; + shortText?: string; + text: string; +}; +``` diff --git a/doc/node-id3.tagframes.commercialframe.md b/doc/node-id3.tagframes.commercialframe.md new file mode 100644 index 0000000..952fe1d --- /dev/null +++ b/doc/node-id3.tagframes.commercialframe.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [CommercialFrame](./node-id3.tagframes.commercialframe.md) + +## TagFrames.CommercialFrame type + +Commercial COMR frame + +**Signature:** + +```typescript +export type CommercialFrame = { + prices: { + [currencyCode: string]: string | number; + }; + validUntil: { + year: number; + month: number; + day: number; + }; + contactUrl?: string; + receivedAs: number; + nameOfSeller?: string; + description?: string; + sellerLogo?: { + mimeType?: string; + picture: string | Buffer; + }; +}; +``` diff --git a/doc/node-id3.tagframes.commercialurl.md b/doc/node-id3.tagframes.commercialurl.md new file mode 100644 index 0000000..08ec16f --- /dev/null +++ b/doc/node-id3.tagframes.commercialurl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [CommercialUrl](./node-id3.tagframes.commercialurl.md) + +## TagFrames.CommercialUrl type + +The 'Commercial information' frame is a URL pointing at a webpage with information such as where the album can be bought. There may be more than one "WCOM" frame in a tag, but not with the same content. + +**Signature:** + +```typescript +export type CommercialUrl = string[]; +``` diff --git a/doc/node-id3.tagframes.composer.md b/doc/node-id3.tagframes.composer.md new file mode 100644 index 0000000..49a2108 --- /dev/null +++ b/doc/node-id3.tagframes.composer.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Composer](./node-id3.tagframes.composer.md) + +## TagFrames.Composer type + +The 'Composer(s)' frame is intended for the name of the composer(s). They are seperated with the "/" character. + +**Signature:** + +```typescript +export type Composer = string; +``` diff --git a/doc/node-id3.tagframes.conductor.md b/doc/node-id3.tagframes.conductor.md new file mode 100644 index 0000000..6d4cfeb --- /dev/null +++ b/doc/node-id3.tagframes.conductor.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Conductor](./node-id3.tagframes.conductor.md) + +## TagFrames.Conductor type + +The 'Conductor' frame is used for the name of the conductor. + +**Signature:** + +```typescript +export type Conductor = string; +``` diff --git a/doc/node-id3.tagframes.contentgroup.md b/doc/node-id3.tagframes.contentgroup.md new file mode 100644 index 0000000..4bb174c --- /dev/null +++ b/doc/node-id3.tagframes.contentgroup.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [ContentGroup](./node-id3.tagframes.contentgroup.md) + +## TagFrames.ContentGroup type + +The 'Content group description' frame is used if the sound belongs to a larger category of sounds/music. For example, classical music is often sorted in different musical sections (e.g. "Piano Concerto", "Weather - Hurricane"). + +**Signature:** + +```typescript +export type ContentGroup = string; +``` diff --git a/doc/node-id3.tagframes.copyright.md b/doc/node-id3.tagframes.copyright.md new file mode 100644 index 0000000..edcfd03 --- /dev/null +++ b/doc/node-id3.tagframes.copyright.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Copyright](./node-id3.tagframes.copyright.md) + +## TagFrames.Copyright type + +The 'Copyright message' frame, which must begin with a year and a space character (making five characters), is intended for the copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the copyright information is unavailable or has been removed, and must not be interpreted to mean that the sound is public domain. Every time this field is displayed the field must be preceded with "Copyright © ". + +**Signature:** + +```typescript +export type Copyright = string; +``` diff --git a/doc/node-id3.tagframes.copyrighturl.md b/doc/node-id3.tagframes.copyrighturl.md new file mode 100644 index 0000000..0119ce8 --- /dev/null +++ b/doc/node-id3.tagframes.copyrighturl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [CopyrightUrl](./node-id3.tagframes.copyrighturl.md) + +## TagFrames.CopyrightUrl type + +The 'Copyright/Legal information' frame is a URL pointing at a webpage where the terms of use and ownership of the file is described. + +**Signature:** + +```typescript +export type CopyrightUrl = string; +``` diff --git a/doc/node-id3.tagframes.encodedby.md b/doc/node-id3.tagframes.encodedby.md new file mode 100644 index 0000000..4491556 --- /dev/null +++ b/doc/node-id3.tagframes.encodedby.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [EncodedBy](./node-id3.tagframes.encodedby.md) + +## TagFrames.EncodedBy type + +The 'Encoded by' frame contains the name of the person or organisation that encoded the audio file. This field may contain a copyright message, if the audio file also is copyrighted by the encoder. + +**Signature:** + +```typescript +export type EncodedBy = string; +``` diff --git a/doc/node-id3.tagframes.encodingtechnology.md b/doc/node-id3.tagframes.encodingtechnology.md new file mode 100644 index 0000000..7fa92a4 --- /dev/null +++ b/doc/node-id3.tagframes.encodingtechnology.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [EncodingTechnology](./node-id3.tagframes.encodingtechnology.md) + +## TagFrames.EncodingTechnology type + +The 'Software/Hardware and settings used for encoding' frame includes the used audio encoder and its settings when the file was encoded. Hardware refers to hardware encoders, not the computer on which a program was run. + +**Signature:** + +```typescript +export type EncodingTechnology = string; +``` diff --git a/doc/node-id3.tagframes.encodingtime.md b/doc/node-id3.tagframes.encodingtime.md new file mode 100644 index 0000000..119dc0f --- /dev/null +++ b/doc/node-id3.tagframes.encodingtime.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [EncodingTime](./node-id3.tagframes.encodingtime.md) + +## TagFrames.EncodingTime type + +The 'Encoding time' frame contains a timestamp describing when the audio was encoded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + +**Signature:** + +```typescript +export type EncodingTime = string; +``` diff --git a/doc/node-id3.tagframes.eventtimingcodes.md b/doc/node-id3.tagframes.eventtimingcodes.md new file mode 100644 index 0000000..036c858 --- /dev/null +++ b/doc/node-id3.tagframes.eventtimingcodes.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [EventTimingCodes](./node-id3.tagframes.eventtimingcodes.md) + +## TagFrames.EventTimingCodes type + +ETCO frame + +**Signature:** + +```typescript +export type EventTimingCodes = { + timeStampFormat: Values; + keyEvents: { + type: number; + timeStamp: number; + }[]; +}; +``` +**References:** [TagConstants](./node-id3.tagconstants.md) + diff --git a/doc/node-id3.tagframes.fileowner.md b/doc/node-id3.tagframes.fileowner.md new file mode 100644 index 0000000..2749c2c --- /dev/null +++ b/doc/node-id3.tagframes.fileowner.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [FileOwner](./node-id3.tagframes.fileowner.md) + +## TagFrames.FileOwner type + +The 'File owner/licensee' frame contains the name of the owner or licensee of the file and it's contents. + +**Signature:** + +```typescript +export type FileOwner = string; +``` diff --git a/doc/node-id3.tagframes.filetype.md b/doc/node-id3.tagframes.filetype.md new file mode 100644 index 0000000..99a54da --- /dev/null +++ b/doc/node-id3.tagframes.filetype.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [FileType](./node-id3.tagframes.filetype.md) + +## TagFrames.FileType type + +The 'File type' frame indicates which type of audio this tag defines. The following type and refinements are defined: + +MPG MPEG Audio /1 MPEG 1/2 layer I /2 MPEG 1/2 layer II /3 MPEG 1/2 layer III /2.5 MPEG 2.5 /AAC Advanced audio compression VQF Transform-domain Weighted Interleave Vector Quantization PCM Pulse Code Modulated audio + +but other types may be used, not for these types though. This is used in a similar way to the predefined types in the "Media type" frame, but without parentheses. If this frame is not present audio type is assumed to be "MPG". + +**Signature:** + +```typescript +export type FileType = string; +``` diff --git a/doc/node-id3.tagframes.fileurl.md b/doc/node-id3.tagframes.fileurl.md new file mode 100644 index 0000000..1a37892 --- /dev/null +++ b/doc/node-id3.tagframes.fileurl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [FileUrl](./node-id3.tagframes.fileurl.md) + +## TagFrames.FileUrl type + +The 'Official audio file webpage' frame is a URL pointing at a file specific webpage. + +**Signature:** + +```typescript +export type FileUrl = string; +``` diff --git a/doc/node-id3.tagframes.genre.md b/doc/node-id3.tagframes.genre.md new file mode 100644 index 0000000..b6b61c5 --- /dev/null +++ b/doc/node-id3.tagframes.genre.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Genre](./node-id3.tagframes.genre.md) + +## TagFrames.Genre type + +The 'Content type', which previously was stored as a one byte numeric value only, is now a numeric string. You may use one or several of the types as ID3v1.1 did or, since the category list would be impossible to maintain with accurate and up to date categories, define your own. + +References to the ID3v1 genres can be made by, as first byte, enter "(" followed by a number from the genres list (appendix A) and ended with a ")" character. This is optionally followed by a refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be made in the same frame, e.g. "(51)(39)". If the refinement should begin with a "(" character it should be replaced with "((", e.g. "((I can figure out any genre)" or "(55)((I think...)" + +**Signature:** + +```typescript +export type Genre = string; +``` diff --git a/doc/node-id3.tagframes.image.md b/doc/node-id3.tagframes.image.md new file mode 100644 index 0000000..e008a20 --- /dev/null +++ b/doc/node-id3.tagframes.image.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Image](./node-id3.tagframes.image.md) + +## TagFrames.Image type + +`APIC` (attached picture) tag frames + +Filename or image data. + +**Signature:** + +```typescript +export type Image = string | Buffer | { + mime: string; + type: { + id: number; + name?: string; + }; + description?: string; + imageBuffer: Buffer; +}; +``` diff --git a/doc/node-id3.tagframes.initialkey.md b/doc/node-id3.tagframes.initialkey.md new file mode 100644 index 0000000..44ea326 --- /dev/null +++ b/doc/node-id3.tagframes.initialkey.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [InitialKey](./node-id3.tagframes.initialkey.md) + +## TagFrames.InitialKey type + +The 'Initial key' frame contains the musical key in which the sound starts. It is represented as a string with a maximum length of three characters. The ground keys are represented with "A","B","C","D","E", "F" and "G" and halfkeys represented with "b" and "\#". Minor is represented as "m". Example "Cbm". Off key is represented with an "o" only. + +**Signature:** + +```typescript +export type InitialKey = string; +``` diff --git a/doc/node-id3.tagframes.internetradioname.md b/doc/node-id3.tagframes.internetradioname.md new file mode 100644 index 0000000..e1e90a3 --- /dev/null +++ b/doc/node-id3.tagframes.internetradioname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [InternetRadioName](./node-id3.tagframes.internetradioname.md) + +## TagFrames.InternetRadioName type + +The 'Internet radio station name' frame contains the name of the internet radio station from which the audio is streamed. + +**Signature:** + +```typescript +export type InternetRadioName = string; +``` diff --git a/doc/node-id3.tagframes.internetradioowner.md b/doc/node-id3.tagframes.internetradioowner.md new file mode 100644 index 0000000..7124d4f --- /dev/null +++ b/doc/node-id3.tagframes.internetradioowner.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [InternetRadioOwner](./node-id3.tagframes.internetradioowner.md) + +## TagFrames.InternetRadioOwner type + +The 'Internet radio station owner' frame contains the name of the owner of the internet radio station from which the audio is streamed. + +**Signature:** + +```typescript +export type InternetRadioOwner = string; +``` diff --git a/doc/node-id3.tagframes.involvedpeoplelist.md b/doc/node-id3.tagframes.involvedpeoplelist.md new file mode 100644 index 0000000..7a03577 --- /dev/null +++ b/doc/node-id3.tagframes.involvedpeoplelist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [InvolvedPeopleList](./node-id3.tagframes.involvedpeoplelist.md) + +## TagFrames.InvolvedPeopleList type + +The 'Involved people list' is very similar to the musician credits list, but maps between functions, like producer, and names. + +**Signature:** + +```typescript +export type InvolvedPeopleList = string; +``` diff --git a/doc/node-id3.tagframes.isrc.md b/doc/node-id3.tagframes.isrc.md new file mode 100644 index 0000000..91a7157 --- /dev/null +++ b/doc/node-id3.tagframes.isrc.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [ISRC](./node-id3.tagframes.isrc.md) + +## TagFrames.ISRC type + +The 'ISRC' frame should contain the International Standard Recording Code (ISRC) (12 characters). + +**Signature:** + +```typescript +export type ISRC = string; +``` diff --git a/doc/node-id3.tagframes.language.md b/doc/node-id3.tagframes.language.md new file mode 100644 index 0000000..93f8867 --- /dev/null +++ b/doc/node-id3.tagframes.language.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Language](./node-id3.tagframes.language.md) + +## TagFrames.Language type + +The 'Language(s)' frame should contain the languages of the text or lyrics spoken or sung in the audio. The language is represented with three characters according to ISO-639-2. If more than one language is used in the text their language codes should follow according to their usage. + +**Signature:** + +```typescript +export type Language = string; +``` diff --git a/doc/node-id3.tagframes.length.md b/doc/node-id3.tagframes.length.md new file mode 100644 index 0000000..41d91bc --- /dev/null +++ b/doc/node-id3.tagframes.length.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Length](./node-id3.tagframes.length.md) + +## TagFrames.Length type + +The 'Length' frame contains the length of the audiofile in milliseconds, represented as a numeric string. + +**Signature:** + +```typescript +export type Length = string; +``` diff --git a/doc/node-id3.tagframes.md b/doc/node-id3.tagframes.md new file mode 100644 index 0000000..58a6520 --- /dev/null +++ b/doc/node-id3.tagframes.md @@ -0,0 +1,88 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) + +## TagFrames namespace + +## Interfaces + +| Interface | Description | +| --- | --- | +| [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) | The synchronised lyrics SYLT tag frame. | +| [UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md) | Unsychronised lyrics/text transcription | + +## Type Aliases + +| Type Alias | Description | +| --- | --- | +| [Album](./node-id3.tagframes.album.md) | The 'Album/Movie/Show title' frame is intended for the title of the recording(/source of sound) which the audio in the file is taken from. | +| [AlbumSortOrder](./node-id3.tagframes.albumsortorder.md) | The 'Album sort order' frame defines a string which should be used instead of the album name (TALB) for sorting purposes. E.g. an album named "A Soundtrack" might preferably be sorted as "Soundtrack". | +| [Artist](./node-id3.tagframes.artist.md) | The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. | +| [ArtistUrl](./node-id3.tagframes.artisturl.md) | The 'Official artist/performer webpage' frame is a URL pointing at the artists official webpage. There may be more than one "WOAR" frame in a tag if the audio contains more than one performer, but not with the same content. | +| [AudioSourceUrl](./node-id3.tagframes.audiosourceurl.md) | The 'Official audio source webpage' frame is a URL pointing at the official webpage for the source of the audio file, e.g. a movie. | +| [Bpm](./node-id3.tagframes.bpm.md) | The 'BPM' frame contains the number of beats per minute in the mainpart of the audio. The BPM is an integer and represented as a numerical string. | +| [Chapter](./node-id3.tagframes.chapter.md) | The purpose of this frame is to describe a single chapter within an audio file. There may be more than one frame of this type in a tag but each must have an Element ID that is unique with respect to any other "CHAP" frame or "CTOC" frame in the tag. | +| [Comment](./node-id3.tagframes.comment.md) | | +| [CommercialFrame](./node-id3.tagframes.commercialframe.md) | Commercial COMR frame | +| [CommercialUrl](./node-id3.tagframes.commercialurl.md) | The 'Commercial information' frame is a URL pointing at a webpage with information such as where the album can be bought. There may be more than one "WCOM" frame in a tag, but not with the same content. | +| [Composer](./node-id3.tagframes.composer.md) | The 'Composer(s)' frame is intended for the name of the composer(s). They are seperated with the "/" character. | +| [Conductor](./node-id3.tagframes.conductor.md) | The 'Conductor' frame is used for the name of the conductor. | +| [ContentGroup](./node-id3.tagframes.contentgroup.md) | The 'Content group description' frame is used if the sound belongs to a larger category of sounds/music. For example, classical music is often sorted in different musical sections (e.g. "Piano Concerto", "Weather - Hurricane"). | +| [Copyright](./node-id3.tagframes.copyright.md) | The 'Copyright message' frame, which must begin with a year and a space character (making five characters), is intended for the copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the copyright information is unavailable or has been removed, and must not be interpreted to mean that the sound is public domain. Every time this field is displayed the field must be preceded with "Copyright © ". | +| [CopyrightUrl](./node-id3.tagframes.copyrighturl.md) | The 'Copyright/Legal information' frame is a URL pointing at a webpage where the terms of use and ownership of the file is described. | +| [EncodedBy](./node-id3.tagframes.encodedby.md) | The 'Encoded by' frame contains the name of the person or organisation that encoded the audio file. This field may contain a copyright message, if the audio file also is copyrighted by the encoder. | +| [EncodingTechnology](./node-id3.tagframes.encodingtechnology.md) | The 'Software/Hardware and settings used for encoding' frame includes the used audio encoder and its settings when the file was encoded. Hardware refers to hardware encoders, not the computer on which a program was run. | +| [EncodingTime](./node-id3.tagframes.encodingtime.md) | The 'Encoding time' frame contains a timestamp describing when the audio was encoded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. | +| [EventTimingCodes](./node-id3.tagframes.eventtimingcodes.md) | ETCO frame | +| [FileOwner](./node-id3.tagframes.fileowner.md) | The 'File owner/licensee' frame contains the name of the owner or licensee of the file and it's contents. | +| [FileType](./node-id3.tagframes.filetype.md) |

The 'File type' frame indicates which type of audio this tag defines. The following type and refinements are defined:

MPG MPEG Audio /1 MPEG 1/2 layer I /2 MPEG 1/2 layer II /3 MPEG 1/2 layer III /2.5 MPEG 2.5 /AAC Advanced audio compression VQF Transform-domain Weighted Interleave Vector Quantization PCM Pulse Code Modulated audio

but other types may be used, not for these types though. This is used in a similar way to the predefined types in the "Media type" frame, but without parentheses. If this frame is not present audio type is assumed to be "MPG".

| +| [FileUrl](./node-id3.tagframes.fileurl.md) | The 'Official audio file webpage' frame is a URL pointing at a file specific webpage. | +| [Genre](./node-id3.tagframes.genre.md) |

The 'Content type', which previously was stored as a one byte numeric value only, is now a numeric string. You may use one or several of the types as ID3v1.1 did or, since the category list would be impossible to maintain with accurate and up to date categories, define your own.

References to the ID3v1 genres can be made by, as first byte, enter "(" followed by a number from the genres list (appendix A) and ended with a ")" character. This is optionally followed by a refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be made in the same frame, e.g. "(51)(39)". If the refinement should begin with a "(" character it should be replaced with "((", e.g. "((I can figure out any genre)" or "(55)((I think...)"

| +| [Image](./node-id3.tagframes.image.md) |

APIC (attached picture) tag frames

Filename or image data.

| +| [InitialKey](./node-id3.tagframes.initialkey.md) | The 'Initial key' frame contains the musical key in which the sound starts. It is represented as a string with a maximum length of three characters. The ground keys are represented with "A","B","C","D","E", "F" and "G" and halfkeys represented with "b" and "\#". Minor is represented as "m". Example "Cbm". Off key is represented with an "o" only. | +| [InternetRadioName](./node-id3.tagframes.internetradioname.md) | The 'Internet radio station name' frame contains the name of the internet radio station from which the audio is streamed. | +| [InternetRadioOwner](./node-id3.tagframes.internetradioowner.md) | The 'Internet radio station owner' frame contains the name of the owner of the internet radio station from which the audio is streamed. | +| [InvolvedPeopleList](./node-id3.tagframes.involvedpeoplelist.md) | The 'Involved people list' is very similar to the musician credits list, but maps between functions, like producer, and names. | +| [ISRC](./node-id3.tagframes.isrc.md) | The 'ISRC' frame should contain the International Standard Recording Code (ISRC) (12 characters). | +| [Language](./node-id3.tagframes.language.md) | The 'Language(s)' frame should contain the languages of the text or lyrics spoken or sung in the audio. The language is represented with three characters according to ISO-639-2. If more than one language is used in the text their language codes should follow according to their usage. | +| [Length](./node-id3.tagframes.length.md) | The 'Length' frame contains the length of the audiofile in milliseconds, represented as a numeric string. | +| [MediaType](./node-id3.tagframes.mediatype.md) | The 'Media type' frame describes from which media the sound originated. | +| [Mood](./node-id3.tagframes.mood.md) | The 'Mood' frame is intended to reflect the mood of the audio with a few keywords, e.g. "Romantic" or "Sad". | +| [MusicianCreditsList](./node-id3.tagframes.musiciancreditslist.md) | The 'Musician credits list' is intended as a mapping between instruments and the musician that played it. Every odd field is an instrument and every even is an artist or a comma delimited list of artists. | +| [OriginalArtist](./node-id3.tagframes.originalartist.md) | The 'Original artist(s)/performer(s)' frame is intended for the performer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The performers are seperated with the "/" character. | +| [OriginalFilename](./node-id3.tagframes.originalfilename.md) | The 'Original filename' frame contains the preferred filename for the file, since some media doesn't allow the desired length of the filename. The filename is case sensitive and includes its suffix. | +| [OriginalReleaseTime](./node-id3.tagframes.originalreleasetime.md) | The 'Original release time' frame contains a timestamp describing when the original recording of the audio was released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. | +| [OriginalTextwriter](./node-id3.tagframes.originaltextwriter.md) | The 'Original lyricist(s)/text writer(s)' frame is intended for the text writer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The text writers are seperated with the "/" character. | +| [OriginalTitle](./node-id3.tagframes.originaltitle.md) | The 'Original album/movie/show title' frame is intended for the title of the original recording (or source of sound), if for example the music in the file should be a cover of a previously released song. | +| [OriginalYear](./node-id3.tagframes.originalyear.md) | The 'Original release year' frame is intended for the year when the original recording, if for example the music in the file should be a cover of a previously released song, was released. The field is formatted as in the "Year" frame. | +| [PartOfSet](./node-id3.tagframes.partofset.md) | The 'Part of a set' frame is a numeric string that describes which part of a set the audio came from. This frame is used if the source described in the "Album/Movie/Show title" frame is divided into several mediums, e.g. a double CD. The value may be extended with a "/" character and a numeric string containing the total number of parts in the set. E.g. "1/2". | +| [PaymentUrl](./node-id3.tagframes.paymenturl.md) | The 'Payment' frame is a URL pointing at a webpage that will handle the process of paying for this file. | +| [PerformerInfo](./node-id3.tagframes.performerinfo.md) | The 'Band/Orchestra/Accompaniment' frame is used for additional information about the performers in the recording. | +| [PerformerSortOrder](./node-id3.tagframes.performersortorder.md) | The 'Performer sort order' frame defines a string which should be used instead of the performer (TPE2) for sorting purposes. | +| [PlaylistDelay](./node-id3.tagframes.playlistdelay.md) | The 'Playlist delay' defines the numbers of milliseconds of silence between every song in a playlist. The player should use the "ETC" frame, if present, to skip initial silence and silence at the end of the audio to match the 'Playlist delay' time. The time is represented as a numeric string. | +| [Popularimeter](./node-id3.tagframes.popularimeter.md) | | +| [Private](./node-id3.tagframes.private.md) | | +| [ProducedNotice](./node-id3.tagframes.producednotice.md) | The 'Produced notice' frame, in which the string must begin with a year and a space character (making five characters), is intended for the production copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the production copyright information is unavailable or has been removed, and must not be interpreted to mean that the audio is public domain. Every time this field is displayed the field must be preceded with "Produced " (P) " ", where (P) is one character showing a P in a circle. | +| [Publisher](./node-id3.tagframes.publisher.md) | The 'Publisher' frame simply contains the name of the label or publisher. | +| [PublisherUrl](./node-id3.tagframes.publisherurl.md) | The 'Publishers official webpage' frame is a URL pointing at the official wepage for the publisher. | +| [RadioStationUrl](./node-id3.tagframes.radiostationurl.md) | The 'Official internet radio station homepage' contains a URL pointing at the homepage of the internet radio station. | +| [RecordingDate](./node-id3.tagframes.recordingdate.md) | The 'Date' frame is a numeric string in the DDMM format containing the date for the recording. This field is always four characters long. | +| [RecordingDates](./node-id3.tagframes.recordingdates.md) | The 'Recording dates' frame is a intended to be used as complement to the "Year", "Date" and "Time" frames. E.g. "4th-7th June, 12th June" in combination with the "Year" frame. | +| [RecordingTime](./node-id3.tagframes.recordingtime.md) | The 'Recording time' frame contains a timestamp describing when the audio was recorded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. | +| [ReleaseTime](./node-id3.tagframes.releasetime.md) | The 'Release time' frame contains a timestamp describing when the audio was first released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. | +| [RemixArtist](./node-id3.tagframes.remixartist.md) | The 'Interpreted, remixed, or otherwise modified by' frame contains more information about the people behind a remix and similar interpretations of another existing piece. | +| [SetSubtitle](./node-id3.tagframes.setsubtitle.md) | The 'Set subtitle' frame is intended for the subtitle of the part of a set this track belongs to. | +| [Size](./node-id3.tagframes.size.md) | The 'Size' frame contains the size of the audiofile in bytes, excluding the ID3v2 tag, represented as a numeric string. | +| [Subtitle](./node-id3.tagframes.subtitle.md) | The 'Subtitle/Description refinement' frame is used for information directly related to the contents title (e.g. "Op. 16" or "Performed live at Wembley"). | +| [TableOfContents](./node-id3.tagframes.tableofcontents.md) | | +| [TaggingTime](./node-id3.tagframes.taggingtime.md) | The 'Tagging time' frame contains a timestamp describing then the audio was tagged. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. | +| [TextWriter](./node-id3.tagframes.textwriter.md) | The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) of the text or lyrics in the recording. They are seperated with the "/" character. | +| [Time](./node-id3.tagframes.time.md) | The 'Time' frame is a numeric string in the HHMM format containing the time for the recording. This field is always four characters long. | +| [Title](./node-id3.tagframes.title.md) | The 'Title/Songname/Content description' frame is the actual name of the piece (e.g. "Adagio", "Hurricane Donna"). | +| [TitleSortOrder](./node-id3.tagframes.titlesortorder.md) | The 'Title sort order' frame defines a string which should be used instead of the title (TIT2) for sorting purposes. | +| [TrackNumber](./node-id3.tagframes.tracknumber.md) | The 'Track number/Position in set' frame is a numeric string containing the order number of the audio-file on its original recording. This may be extended with a "/" character and a numeric string containing the total numer of tracks/elements on the original recording. E.g. "4/9". | +| [UniqueFileIdentifier](./node-id3.tagframes.uniquefileidentifier.md) |

This frame's purpose is to be able to identify the audio file in a database that may contain more information relevant to the content. Since standardisation of such a database is beyond this document, all frames begin with a null-terminated string with a URL containing an email address, or a link to a location where an email address can be found, that belongs to the organisation responsible for this specific database implementation. Questions regarding the database should be sent to the indicated email address. The URL should not be used for the actual database queries. The string "http://www.id3.org/dummy/ufid.html" should be used for tests. Software that isn't told otherwise may safely remove such frames.

There may be more than one "UFID" frame in a tag, but only one with the same ownerIdentifier.

| +| [UserDefinedText](./node-id3.tagframes.userdefinedtext.md) | | +| [UserDefinedUrl](./node-id3.tagframes.userdefinedurl.md) | The 'User-defined URL link' frame is intended for URL links concerning the audiofile in a similar way to the other "W"-frames. There may be more than one "WXXX" frame in each tag, but only one with the same description. | +| [Year](./node-id3.tagframes.year.md) | The 'Year' frame is a numeric string with a year of the recording. This frames is always four characters long (until the year 10000). | + diff --git a/doc/node-id3.tagframes.mediatype.md b/doc/node-id3.tagframes.mediatype.md new file mode 100644 index 0000000..d7b1491 --- /dev/null +++ b/doc/node-id3.tagframes.mediatype.md @@ -0,0 +1,102 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [MediaType](./node-id3.tagframes.mediatype.md) + +## TagFrames.MediaType type + +The 'Media type' frame describes from which media the sound originated. + +**Signature:** + +```typescript +export type MediaType = string; +``` + +## Remarks + +This may be a text string or a reference to the predefined media types found in the list below. References are made within "(" and ")" and are optionally followed by a text refinement, e.g. "(MC) with four channels". If a text refinement should begin with a "(" character it should be replaced with "((". Predefined refinements is appended after the media type, e.g. "(CD/A)" or "(VID/PAL/VHS)". + +``` +DIG Other digital media + /A Analog transfer from media + +ANA Other analog media + /WAC Wax cylinder + /8CA 8-track tape cassette + +CD CD + /A Analog transfer from media + /DD DDD + /AD ADD + /AA AAD + +LD Laserdisc + /A Analog transfer from media + +TT Turntable records + /33 33.33 rpm + /45 45 rpm + /71 71.29 rpm + /76 76.59 rpm + /78 78.26 rpm + /80 80 rpm + +MD MiniDisc + /A Analog transfer from media + +DAT DAT + /A Analog transfer from media + /1 standard, 48 kHz/16 bits, linear + /2 mode 2, 32 kHz/16 bits, linear + /3 mode 3, 32 kHz/12 bits, nonlinear, low speed + /4 mode 4, 32 kHz/12 bits, 4 channels + /5 mode 5, 44.1 kHz/16 bits, linear + /6 mode 6, 44.1 kHz/16 bits, 'wide track' play + +DCC DCC + /A Analog transfer from media + +DVD DVD + /A Analog transfer from media + +TV Television + /PAL PAL + /NTSC NTSC +/SECAM SECAM + +VID Video + /PAL PAL + /NTSC NTSC +/SECAM SECAM + /VHS VHS + /SVHS S-VHS + /BETA BETAMAX + +RAD Radio + /FM FM + /AM AM + /LW LW + /MW MW + +TEL Telephone + /I ISDN + +MC MC (normal cassette) + /4 4.75 cm/s (normal speed for a two sided cassette) + /9 9.5 cm/s + /I Type I cassette (ferric/normal) + /II Type II cassette (chrome) + /III Type III cassette (ferric chrome) + /IV Type IV cassette (metal) + +REE Reel + /9 9.5 cm/s + /19 19 cm/s + /38 38 cm/s + /76 76 cm/s + /I Type I cassette (ferric/normal) + /II Type II cassette (chrome) + /III Type III cassette (ferric chrome) + /IV Type IV cassette (metal) +``` + diff --git a/doc/node-id3.tagframes.mood.md b/doc/node-id3.tagframes.mood.md new file mode 100644 index 0000000..1a80160 --- /dev/null +++ b/doc/node-id3.tagframes.mood.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Mood](./node-id3.tagframes.mood.md) + +## TagFrames.Mood type + +The 'Mood' frame is intended to reflect the mood of the audio with a few keywords, e.g. "Romantic" or "Sad". + +**Signature:** + +```typescript +export type Mood = string; +``` diff --git a/doc/node-id3.tagframes.musiciancreditslist.md b/doc/node-id3.tagframes.musiciancreditslist.md new file mode 100644 index 0000000..7517670 --- /dev/null +++ b/doc/node-id3.tagframes.musiciancreditslist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [MusicianCreditsList](./node-id3.tagframes.musiciancreditslist.md) + +## TagFrames.MusicianCreditsList type + +The 'Musician credits list' is intended as a mapping between instruments and the musician that played it. Every odd field is an instrument and every even is an artist or a comma delimited list of artists. + +**Signature:** + +```typescript +export type MusicianCreditsList = string; +``` diff --git a/doc/node-id3.tagframes.originalartist.md b/doc/node-id3.tagframes.originalartist.md new file mode 100644 index 0000000..acfc096 --- /dev/null +++ b/doc/node-id3.tagframes.originalartist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalArtist](./node-id3.tagframes.originalartist.md) + +## TagFrames.OriginalArtist type + +The 'Original artist(s)/performer(s)' frame is intended for the performer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The performers are seperated with the "/" character. + +**Signature:** + +```typescript +export type OriginalArtist = string; +``` diff --git a/doc/node-id3.tagframes.originalfilename.md b/doc/node-id3.tagframes.originalfilename.md new file mode 100644 index 0000000..3cd4d7f --- /dev/null +++ b/doc/node-id3.tagframes.originalfilename.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalFilename](./node-id3.tagframes.originalfilename.md) + +## TagFrames.OriginalFilename type + +The 'Original filename' frame contains the preferred filename for the file, since some media doesn't allow the desired length of the filename. The filename is case sensitive and includes its suffix. + +**Signature:** + +```typescript +export type OriginalFilename = string; +``` diff --git a/doc/node-id3.tagframes.originalreleasetime.md b/doc/node-id3.tagframes.originalreleasetime.md new file mode 100644 index 0000000..8c44723 --- /dev/null +++ b/doc/node-id3.tagframes.originalreleasetime.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalReleaseTime](./node-id3.tagframes.originalreleasetime.md) + +## TagFrames.OriginalReleaseTime type + +The 'Original release time' frame contains a timestamp describing when the original recording of the audio was released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + +**Signature:** + +```typescript +export type OriginalReleaseTime = string; +``` diff --git a/doc/node-id3.tagframes.originaltextwriter.md b/doc/node-id3.tagframes.originaltextwriter.md new file mode 100644 index 0000000..336ffb4 --- /dev/null +++ b/doc/node-id3.tagframes.originaltextwriter.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalTextwriter](./node-id3.tagframes.originaltextwriter.md) + +## TagFrames.OriginalTextwriter type + +The 'Original lyricist(s)/text writer(s)' frame is intended for the text writer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The text writers are seperated with the "/" character. + +**Signature:** + +```typescript +export type OriginalTextwriter = string; +``` diff --git a/doc/node-id3.tagframes.originaltitle.md b/doc/node-id3.tagframes.originaltitle.md new file mode 100644 index 0000000..11c57b2 --- /dev/null +++ b/doc/node-id3.tagframes.originaltitle.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalTitle](./node-id3.tagframes.originaltitle.md) + +## TagFrames.OriginalTitle type + +The 'Original album/movie/show title' frame is intended for the title of the original recording (or source of sound), if for example the music in the file should be a cover of a previously released song. + +**Signature:** + +```typescript +export type OriginalTitle = string; +``` diff --git a/doc/node-id3.tagframes.originalyear.md b/doc/node-id3.tagframes.originalyear.md new file mode 100644 index 0000000..9a0e9b0 --- /dev/null +++ b/doc/node-id3.tagframes.originalyear.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [OriginalYear](./node-id3.tagframes.originalyear.md) + +## TagFrames.OriginalYear type + +The 'Original release year' frame is intended for the year when the original recording, if for example the music in the file should be a cover of a previously released song, was released. The field is formatted as in the "Year" frame. + +**Signature:** + +```typescript +export type OriginalYear = string; +``` diff --git a/doc/node-id3.tagframes.partofset.md b/doc/node-id3.tagframes.partofset.md new file mode 100644 index 0000000..bd9e1ec --- /dev/null +++ b/doc/node-id3.tagframes.partofset.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PartOfSet](./node-id3.tagframes.partofset.md) + +## TagFrames.PartOfSet type + +The 'Part of a set' frame is a numeric string that describes which part of a set the audio came from. This frame is used if the source described in the "Album/Movie/Show title" frame is divided into several mediums, e.g. a double CD. The value may be extended with a "/" character and a numeric string containing the total number of parts in the set. E.g. "1/2". + +**Signature:** + +```typescript +export type PartOfSet = string; +``` diff --git a/doc/node-id3.tagframes.paymenturl.md b/doc/node-id3.tagframes.paymenturl.md new file mode 100644 index 0000000..aa517a4 --- /dev/null +++ b/doc/node-id3.tagframes.paymenturl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PaymentUrl](./node-id3.tagframes.paymenturl.md) + +## TagFrames.PaymentUrl type + +The 'Payment' frame is a URL pointing at a webpage that will handle the process of paying for this file. + +**Signature:** + +```typescript +export type PaymentUrl = string; +``` diff --git a/doc/node-id3.tagframes.performerinfo.md b/doc/node-id3.tagframes.performerinfo.md new file mode 100644 index 0000000..984b1ac --- /dev/null +++ b/doc/node-id3.tagframes.performerinfo.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PerformerInfo](./node-id3.tagframes.performerinfo.md) + +## TagFrames.PerformerInfo type + +The 'Band/Orchestra/Accompaniment' frame is used for additional information about the performers in the recording. + +**Signature:** + +```typescript +export type PerformerInfo = string; +``` diff --git a/doc/node-id3.tagframes.performersortorder.md b/doc/node-id3.tagframes.performersortorder.md new file mode 100644 index 0000000..077eee6 --- /dev/null +++ b/doc/node-id3.tagframes.performersortorder.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PerformerSortOrder](./node-id3.tagframes.performersortorder.md) + +## TagFrames.PerformerSortOrder type + +The 'Performer sort order' frame defines a string which should be used instead of the performer (TPE2) for sorting purposes. + +**Signature:** + +```typescript +export type PerformerSortOrder = string; +``` diff --git a/doc/node-id3.tagframes.playlistdelay.md b/doc/node-id3.tagframes.playlistdelay.md new file mode 100644 index 0000000..14a56ac --- /dev/null +++ b/doc/node-id3.tagframes.playlistdelay.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PlaylistDelay](./node-id3.tagframes.playlistdelay.md) + +## TagFrames.PlaylistDelay type + +The 'Playlist delay' defines the numbers of milliseconds of silence between every song in a playlist. The player should use the "ETC" frame, if present, to skip initial silence and silence at the end of the audio to match the 'Playlist delay' time. The time is represented as a numeric string. + +**Signature:** + +```typescript +export type PlaylistDelay = string; +``` diff --git a/doc/node-id3.tagframes.popularimeter.md b/doc/node-id3.tagframes.popularimeter.md new file mode 100644 index 0000000..246f617 --- /dev/null +++ b/doc/node-id3.tagframes.popularimeter.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Popularimeter](./node-id3.tagframes.popularimeter.md) + +## TagFrames.Popularimeter type + + +**Signature:** + +```typescript +export type Popularimeter = { + email: string; + rating: number; + counter: number; +}; +``` diff --git a/doc/node-id3.tagframes.private.md b/doc/node-id3.tagframes.private.md new file mode 100644 index 0000000..fe6225b --- /dev/null +++ b/doc/node-id3.tagframes.private.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Private](./node-id3.tagframes.private.md) + +## TagFrames.Private type + + +**Signature:** + +```typescript +export type Private = { + ownerIdentifier: string; + data: Buffer; +}; +``` diff --git a/doc/node-id3.tagframes.producednotice.md b/doc/node-id3.tagframes.producednotice.md new file mode 100644 index 0000000..7952ac2 --- /dev/null +++ b/doc/node-id3.tagframes.producednotice.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [ProducedNotice](./node-id3.tagframes.producednotice.md) + +## TagFrames.ProducedNotice type + +The 'Produced notice' frame, in which the string must begin with a year and a space character (making five characters), is intended for the production copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the production copyright information is unavailable or has been removed, and must not be interpreted to mean that the audio is public domain. Every time this field is displayed the field must be preceded with "Produced " (P) " ", where (P) is one character showing a P in a circle. + +**Signature:** + +```typescript +export type ProducedNotice = string; +``` diff --git a/doc/node-id3.tagframes.publisher.md b/doc/node-id3.tagframes.publisher.md new file mode 100644 index 0000000..4d25b23 --- /dev/null +++ b/doc/node-id3.tagframes.publisher.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Publisher](./node-id3.tagframes.publisher.md) + +## TagFrames.Publisher type + +The 'Publisher' frame simply contains the name of the label or publisher. + +**Signature:** + +```typescript +export type Publisher = string; +``` diff --git a/doc/node-id3.tagframes.publisherurl.md b/doc/node-id3.tagframes.publisherurl.md new file mode 100644 index 0000000..f0bb9c4 --- /dev/null +++ b/doc/node-id3.tagframes.publisherurl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [PublisherUrl](./node-id3.tagframes.publisherurl.md) + +## TagFrames.PublisherUrl type + +The 'Publishers official webpage' frame is a URL pointing at the official wepage for the publisher. + +**Signature:** + +```typescript +export type PublisherUrl = string; +``` diff --git a/doc/node-id3.tagframes.radiostationurl.md b/doc/node-id3.tagframes.radiostationurl.md new file mode 100644 index 0000000..3f28173 --- /dev/null +++ b/doc/node-id3.tagframes.radiostationurl.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [RadioStationUrl](./node-id3.tagframes.radiostationurl.md) + +## TagFrames.RadioStationUrl type + +The 'Official internet radio station homepage' contains a URL pointing at the homepage of the internet radio station. + +**Signature:** + +```typescript +export type RadioStationUrl = string; +``` diff --git a/doc/node-id3.tagframes.recordingdate.md b/doc/node-id3.tagframes.recordingdate.md new file mode 100644 index 0000000..6f2a6f8 --- /dev/null +++ b/doc/node-id3.tagframes.recordingdate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [RecordingDate](./node-id3.tagframes.recordingdate.md) + +## TagFrames.RecordingDate type + +The 'Date' frame is a numeric string in the DDMM format containing the date for the recording. This field is always four characters long. + +**Signature:** + +```typescript +export type RecordingDate = string; +``` diff --git a/doc/node-id3.tagframes.recordingdates.md b/doc/node-id3.tagframes.recordingdates.md new file mode 100644 index 0000000..3568c9e --- /dev/null +++ b/doc/node-id3.tagframes.recordingdates.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [RecordingDates](./node-id3.tagframes.recordingdates.md) + +## TagFrames.RecordingDates type + +The 'Recording dates' frame is a intended to be used as complement to the "Year", "Date" and "Time" frames. E.g. "4th-7th June, 12th June" in combination with the "Year" frame. + +**Signature:** + +```typescript +export type RecordingDates = string; +``` diff --git a/doc/node-id3.tagframes.recordingtime.md b/doc/node-id3.tagframes.recordingtime.md new file mode 100644 index 0000000..d9d3b50 --- /dev/null +++ b/doc/node-id3.tagframes.recordingtime.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [RecordingTime](./node-id3.tagframes.recordingtime.md) + +## TagFrames.RecordingTime type + +The 'Recording time' frame contains a timestamp describing when the audio was recorded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + +**Signature:** + +```typescript +export type RecordingTime = string; +``` diff --git a/doc/node-id3.tagframes.releasetime.md b/doc/node-id3.tagframes.releasetime.md new file mode 100644 index 0000000..47621a6 --- /dev/null +++ b/doc/node-id3.tagframes.releasetime.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [ReleaseTime](./node-id3.tagframes.releasetime.md) + +## TagFrames.ReleaseTime type + +The 'Release time' frame contains a timestamp describing when the audio was first released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + +**Signature:** + +```typescript +export type ReleaseTime = string; +``` diff --git a/doc/node-id3.tagframes.remixartist.md b/doc/node-id3.tagframes.remixartist.md new file mode 100644 index 0000000..fdf9254 --- /dev/null +++ b/doc/node-id3.tagframes.remixartist.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [RemixArtist](./node-id3.tagframes.remixartist.md) + +## TagFrames.RemixArtist type + +The 'Interpreted, remixed, or otherwise modified by' frame contains more information about the people behind a remix and similar interpretations of another existing piece. + +**Signature:** + +```typescript +export type RemixArtist = string; +``` diff --git a/doc/node-id3.tagframes.setsubtitle.md b/doc/node-id3.tagframes.setsubtitle.md new file mode 100644 index 0000000..004d04b --- /dev/null +++ b/doc/node-id3.tagframes.setsubtitle.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SetSubtitle](./node-id3.tagframes.setsubtitle.md) + +## TagFrames.SetSubtitle type + +The 'Set subtitle' frame is intended for the subtitle of the part of a set this track belongs to. + +**Signature:** + +```typescript +export type SetSubtitle = string; +``` diff --git a/doc/node-id3.tagframes.size.md b/doc/node-id3.tagframes.size.md new file mode 100644 index 0000000..a04a2f2 --- /dev/null +++ b/doc/node-id3.tagframes.size.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Size](./node-id3.tagframes.size.md) + +## TagFrames.Size type + +The 'Size' frame contains the size of the audiofile in bytes, excluding the ID3v2 tag, represented as a numeric string. + +**Signature:** + +```typescript +export type Size = string; +``` diff --git a/doc/node-id3.tagframes.subtitle.md b/doc/node-id3.tagframes.subtitle.md new file mode 100644 index 0000000..4d0f7cb --- /dev/null +++ b/doc/node-id3.tagframes.subtitle.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Subtitle](./node-id3.tagframes.subtitle.md) + +## TagFrames.Subtitle type + +The 'Subtitle/Description refinement' frame is used for information directly related to the contents title (e.g. "Op. 16" or "Performed live at Wembley"). + +**Signature:** + +```typescript +export type Subtitle = string; +``` diff --git a/doc/node-id3.tagframes.synchronisedlyrics.contenttype.md b/doc/node-id3.tagframes.synchronisedlyrics.contenttype.md new file mode 100644 index 0000000..10138a4 --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.contenttype.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) > [contentType](./node-id3.tagframes.synchronisedlyrics.contenttype.md) + +## TagFrames.SynchronisedLyrics.contentType property + +The type of context in the text (i.e. lyrics, chord, etc.). + + +**Signature:** + +```typescript +contentType: number; +``` diff --git a/doc/node-id3.tagframes.synchronisedlyrics.language.md b/doc/node-id3.tagframes.synchronisedlyrics.language.md new file mode 100644 index 0000000..4eb3ca9 --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.language.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) > [language](./node-id3.tagframes.synchronisedlyrics.language.md) + +## TagFrames.SynchronisedLyrics.language property + +3 letter ISO 639-2 language code, for example: eng + +**Signature:** + +```typescript +language: string; +``` diff --git a/doc/node-id3.tagframes.synchronisedlyrics.md b/doc/node-id3.tagframes.synchronisedlyrics.md new file mode 100644 index 0000000..e06b15d --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) + +## TagFrames.SynchronisedLyrics interface + +The synchronised lyrics `SYLT` tag frame. + +**Signature:** + +```typescript +export interface SynchronisedLyrics +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [contentType](./node-id3.tagframes.synchronisedlyrics.contenttype.md) | | number |

The type of context in the text (i.e. lyrics, chord, etc.).

| +| [language](./node-id3.tagframes.synchronisedlyrics.language.md) | | string | 3 letter ISO 639-2 language code, for example: eng | +| [shortText?](./node-id3.tagframes.synchronisedlyrics.shorttext.md) | | string | _(Optional)_ Content descriptor | +| [synchronisedText](./node-id3.tagframes.synchronisedlyrics.synchronisedtext.md) | | { text: string; timeStamp: number; }\[\] | | +| [timeStampFormat](./node-id3.tagframes.synchronisedlyrics.timestampformat.md) | | Values<[TagConstants](./node-id3.tagconstants.md)\['TimeStampFormat'\]> | Absolute time unit: | + diff --git a/doc/node-id3.tagframes.synchronisedlyrics.shorttext.md b/doc/node-id3.tagframes.synchronisedlyrics.shorttext.md new file mode 100644 index 0000000..9b025cb --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.shorttext.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) > [shortText](./node-id3.tagframes.synchronisedlyrics.shorttext.md) + +## TagFrames.SynchronisedLyrics.shortText property + +Content descriptor + +**Signature:** + +```typescript +shortText?: string; +``` diff --git a/doc/node-id3.tagframes.synchronisedlyrics.synchronisedtext.md b/doc/node-id3.tagframes.synchronisedlyrics.synchronisedtext.md new file mode 100644 index 0000000..d1e1fbe --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.synchronisedtext.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) > [synchronisedText](./node-id3.tagframes.synchronisedlyrics.synchronisedtext.md) + +## TagFrames.SynchronisedLyrics.synchronisedText property + +**Signature:** + +```typescript +synchronisedText: { + text: string; + timeStamp: number; + }[]; +``` diff --git a/doc/node-id3.tagframes.synchronisedlyrics.timestampformat.md b/doc/node-id3.tagframes.synchronisedlyrics.timestampformat.md new file mode 100644 index 0000000..24d33e8 --- /dev/null +++ b/doc/node-id3.tagframes.synchronisedlyrics.timestampformat.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [SynchronisedLyrics](./node-id3.tagframes.synchronisedlyrics.md) > [timeStampFormat](./node-id3.tagframes.synchronisedlyrics.timestampformat.md) + +## TagFrames.SynchronisedLyrics.timeStampFormat property + +Absolute time unit: + +**Signature:** + +```typescript +timeStampFormat: Values; +``` diff --git a/doc/node-id3.tagframes.tableofcontents.md b/doc/node-id3.tagframes.tableofcontents.md new file mode 100644 index 0000000..68f415c --- /dev/null +++ b/doc/node-id3.tagframes.tableofcontents.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [TableOfContents](./node-id3.tagframes.tableofcontents.md) + +## TagFrames.TableOfContents type + +**Signature:** + +```typescript +export type TableOfContents = { + elementID: string; + isOrdered?: boolean; + elements?: string[]; + tags?: Tags; +}; +``` diff --git a/doc/node-id3.tagframes.taggingtime.md b/doc/node-id3.tagframes.taggingtime.md new file mode 100644 index 0000000..e4472aa --- /dev/null +++ b/doc/node-id3.tagframes.taggingtime.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [TaggingTime](./node-id3.tagframes.taggingtime.md) + +## TagFrames.TaggingTime type + +The 'Tagging time' frame contains a timestamp describing then the audio was tagged. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + +**Signature:** + +```typescript +export type TaggingTime = string; +``` diff --git a/doc/node-id3.tagframes.textwriter.md b/doc/node-id3.tagframes.textwriter.md new file mode 100644 index 0000000..6215f55 --- /dev/null +++ b/doc/node-id3.tagframes.textwriter.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [TextWriter](./node-id3.tagframes.textwriter.md) + +## TagFrames.TextWriter type + +The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) of the text or lyrics in the recording. They are seperated with the "/" character. + +**Signature:** + +```typescript +export type TextWriter = string; +``` diff --git a/doc/node-id3.tagframes.time.md b/doc/node-id3.tagframes.time.md new file mode 100644 index 0000000..7562acb --- /dev/null +++ b/doc/node-id3.tagframes.time.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Time](./node-id3.tagframes.time.md) + +## TagFrames.Time type + +The 'Time' frame is a numeric string in the HHMM format containing the time for the recording. This field is always four characters long. + +**Signature:** + +```typescript +export type Time = string; +``` diff --git a/doc/node-id3.tagframes.title.md b/doc/node-id3.tagframes.title.md new file mode 100644 index 0000000..50e28d5 --- /dev/null +++ b/doc/node-id3.tagframes.title.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Title](./node-id3.tagframes.title.md) + +## TagFrames.Title type + +The 'Title/Songname/Content description' frame is the actual name of the piece (e.g. "Adagio", "Hurricane Donna"). + +**Signature:** + +```typescript +export type Title = string; +``` diff --git a/doc/node-id3.tagframes.titlesortorder.md b/doc/node-id3.tagframes.titlesortorder.md new file mode 100644 index 0000000..b478ea1 --- /dev/null +++ b/doc/node-id3.tagframes.titlesortorder.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [TitleSortOrder](./node-id3.tagframes.titlesortorder.md) + +## TagFrames.TitleSortOrder type + +The 'Title sort order' frame defines a string which should be used instead of the title (TIT2) for sorting purposes. + +**Signature:** + +```typescript +export type TitleSortOrder = string; +``` diff --git a/doc/node-id3.tagframes.tracknumber.md b/doc/node-id3.tagframes.tracknumber.md new file mode 100644 index 0000000..8e38590 --- /dev/null +++ b/doc/node-id3.tagframes.tracknumber.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [TrackNumber](./node-id3.tagframes.tracknumber.md) + +## TagFrames.TrackNumber type + +The 'Track number/Position in set' frame is a numeric string containing the order number of the audio-file on its original recording. This may be extended with a "/" character and a numeric string containing the total numer of tracks/elements on the original recording. E.g. "4/9". + +**Signature:** + +```typescript +export type TrackNumber = string; +``` diff --git a/doc/node-id3.tagframes.uniquefileidentifier.md b/doc/node-id3.tagframes.uniquefileidentifier.md new file mode 100644 index 0000000..9080849 --- /dev/null +++ b/doc/node-id3.tagframes.uniquefileidentifier.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UniqueFileIdentifier](./node-id3.tagframes.uniquefileidentifier.md) + +## TagFrames.UniqueFileIdentifier type + +This frame's purpose is to be able to identify the audio file in a database that may contain more information relevant to the content. Since standardisation of such a database is beyond this document, all frames begin with a null-terminated string with a URL containing an email address, or a link to a location where an email address can be found, that belongs to the organisation responsible for this specific database implementation. Questions regarding the database should be sent to the indicated email address. The URL should not be used for the actual database queries. The string "http://www.id3.org/dummy/ufid.html" should be used for tests. Software that isn't told otherwise may safely remove such frames. + +There may be more than one "UFID" frame in a tag, but only one with the same `ownerIdentifier`. + +**Signature:** + +```typescript +export type UniqueFileIdentifier = { + ownerIdentifier: string; + identifier: Buffer; +}; +``` diff --git a/doc/node-id3.tagframes.unsynchronisedlyrics.language.md b/doc/node-id3.tagframes.unsynchronisedlyrics.language.md new file mode 100644 index 0000000..5131b38 --- /dev/null +++ b/doc/node-id3.tagframes.unsynchronisedlyrics.language.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md) > [language](./node-id3.tagframes.unsynchronisedlyrics.language.md) + +## TagFrames.UnsynchronisedLyrics.language property + +3 letter ISO 639-2 language code, for example: eng + +**Signature:** + +```typescript +language: string; +``` diff --git a/doc/node-id3.tagframes.unsynchronisedlyrics.md b/doc/node-id3.tagframes.unsynchronisedlyrics.md new file mode 100644 index 0000000..3d5d94a --- /dev/null +++ b/doc/node-id3.tagframes.unsynchronisedlyrics.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md) + +## TagFrames.UnsynchronisedLyrics interface + +Unsychronised lyrics/text transcription + +**Signature:** + +```typescript +export interface UnsynchronisedLyrics +``` + +## Remarks + +This frame contains the lyrics of the song or a text transcription of other vocal activities. The head includes an encoding descriptor and a content descriptor. The body consists of the actual text. The 'Content descriptor' is a terminated string. If no descriptor is entered, 'Content descriptor' is $00 (00) only. Newline characters are allowed in the text. There may be more than one 'Unsynchronised lyrics/text transcription' frame in each tag, but only one with the same language and content descriptor. + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [language](./node-id3.tagframes.unsynchronisedlyrics.language.md) | | string | 3 letter ISO 639-2 language code, for example: eng | +| [shortText?](./node-id3.tagframes.unsynchronisedlyrics.shorttext.md) | | string | _(Optional)_ Content descriptor | +| [text](./node-id3.tagframes.unsynchronisedlyrics.text.md) | | string | Lyrics/text | + diff --git a/doc/node-id3.tagframes.unsynchronisedlyrics.shorttext.md b/doc/node-id3.tagframes.unsynchronisedlyrics.shorttext.md new file mode 100644 index 0000000..eeb2753 --- /dev/null +++ b/doc/node-id3.tagframes.unsynchronisedlyrics.shorttext.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md) > [shortText](./node-id3.tagframes.unsynchronisedlyrics.shorttext.md) + +## TagFrames.UnsynchronisedLyrics.shortText property + +Content descriptor + +**Signature:** + +```typescript +shortText?: string; +``` diff --git a/doc/node-id3.tagframes.unsynchronisedlyrics.text.md b/doc/node-id3.tagframes.unsynchronisedlyrics.text.md new file mode 100644 index 0000000..3d6c07a --- /dev/null +++ b/doc/node-id3.tagframes.unsynchronisedlyrics.text.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UnsynchronisedLyrics](./node-id3.tagframes.unsynchronisedlyrics.md) > [text](./node-id3.tagframes.unsynchronisedlyrics.text.md) + +## TagFrames.UnsynchronisedLyrics.text property + +Lyrics/text + +**Signature:** + +```typescript +text: string; +``` diff --git a/doc/node-id3.tagframes.userdefinedtext.md b/doc/node-id3.tagframes.userdefinedtext.md new file mode 100644 index 0000000..3ed6adc --- /dev/null +++ b/doc/node-id3.tagframes.userdefinedtext.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UserDefinedText](./node-id3.tagframes.userdefinedtext.md) + +## TagFrames.UserDefinedText type + + +**Signature:** + +```typescript +export type UserDefinedText = { + description: string; + value: string; +}; +``` diff --git a/doc/node-id3.tagframes.userdefinedurl.md b/doc/node-id3.tagframes.userdefinedurl.md new file mode 100644 index 0000000..4fb0368 --- /dev/null +++ b/doc/node-id3.tagframes.userdefinedurl.md @@ -0,0 +1,16 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [UserDefinedUrl](./node-id3.tagframes.userdefinedurl.md) + +## TagFrames.UserDefinedUrl type + +The 'User-defined URL link' frame is intended for URL links concerning the audiofile in a similar way to the other "W"-frames. There may be more than one "WXXX" frame in each tag, but only one with the same description. + +**Signature:** + +```typescript +export type UserDefinedUrl = { + description: string; + url: string; +}; +``` diff --git a/doc/node-id3.tagframes.year.md b/doc/node-id3.tagframes.year.md new file mode 100644 index 0000000..d7f3305 --- /dev/null +++ b/doc/node-id3.tagframes.year.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagFrames](./node-id3.tagframes.md) > [Year](./node-id3.tagframes.year.md) + +## TagFrames.Year type + +The 'Year' frame is a numeric string with a year of the recording. This frames is always four characters long (until the year 10000). + +**Signature:** + +```typescript +export type Year = string; +``` diff --git a/doc/node-id3.tagidentifiers.apic.md b/doc/node-id3.tagidentifiers.apic.md new file mode 100644 index 0000000..1291bd1 --- /dev/null +++ b/doc/node-id3.tagidentifiers.apic.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [APIC](./node-id3.tagidentifiers.apic.md) + +## TagIdentifiers.APIC property + +**Signature:** + +```typescript +APIC?: TagAliases["image"]; +``` diff --git a/doc/node-id3.tagidentifiers.chap.md b/doc/node-id3.tagidentifiers.chap.md new file mode 100644 index 0000000..dea6897 --- /dev/null +++ b/doc/node-id3.tagidentifiers.chap.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [CHAP](./node-id3.tagidentifiers.chap.md) + +## TagIdentifiers.CHAP property + +**Signature:** + +```typescript +CHAP?: TagAliases["chapter"]; +``` diff --git a/doc/node-id3.tagidentifiers.comm.md b/doc/node-id3.tagidentifiers.comm.md new file mode 100644 index 0000000..3d334ed --- /dev/null +++ b/doc/node-id3.tagidentifiers.comm.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [COMM](./node-id3.tagidentifiers.comm.md) + +## TagIdentifiers.COMM property + +**Signature:** + +```typescript +COMM?: TagAliases["comment"]; +``` diff --git a/doc/node-id3.tagidentifiers.comr.md b/doc/node-id3.tagidentifiers.comr.md new file mode 100644 index 0000000..185bb91 --- /dev/null +++ b/doc/node-id3.tagidentifiers.comr.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [COMR](./node-id3.tagidentifiers.comr.md) + +## TagIdentifiers.COMR property + +**Signature:** + +```typescript +COMR?: TagAliases["commercialFrame"]; +``` diff --git a/doc/node-id3.tagidentifiers.ctoc.md b/doc/node-id3.tagidentifiers.ctoc.md new file mode 100644 index 0000000..de0ae08 --- /dev/null +++ b/doc/node-id3.tagidentifiers.ctoc.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [CTOC](./node-id3.tagidentifiers.ctoc.md) + +## TagIdentifiers.CTOC property + +**Signature:** + +```typescript +CTOC?: TagAliases["tableOfContents"]; +``` diff --git a/doc/node-id3.tagidentifiers.etco.md b/doc/node-id3.tagidentifiers.etco.md new file mode 100644 index 0000000..527cee8 --- /dev/null +++ b/doc/node-id3.tagidentifiers.etco.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [ETCO](./node-id3.tagidentifiers.etco.md) + +## TagIdentifiers.ETCO property + +**Signature:** + +```typescript +ETCO?: TagAliases["eventTimingCodes"]; +``` diff --git a/doc/node-id3.tagidentifiers.md b/doc/node-id3.tagidentifiers.md new file mode 100644 index 0000000..390091d --- /dev/null +++ b/doc/node-id3.tagidentifiers.md @@ -0,0 +1,90 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) + +## TagIdentifiers interface + + +**Signature:** + +```typescript +export interface TagIdentifiers +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [APIC?](./node-id3.tagidentifiers.apic.md) | | [TagAliases](./node-id3.tagaliases.md)\["image"\] | _(Optional)_ | +| [CHAP?](./node-id3.tagidentifiers.chap.md) | | [TagAliases](./node-id3.tagaliases.md)\["chapter"\] | _(Optional)_ | +| [COMM?](./node-id3.tagidentifiers.comm.md) | | [TagAliases](./node-id3.tagaliases.md)\["comment"\] | _(Optional)_ | +| [COMR?](./node-id3.tagidentifiers.comr.md) | | [TagAliases](./node-id3.tagaliases.md)\["commercialFrame"\] | _(Optional)_ | +| [CTOC?](./node-id3.tagidentifiers.ctoc.md) | | [TagAliases](./node-id3.tagaliases.md)\["tableOfContents"\] | _(Optional)_ | +| [ETCO?](./node-id3.tagidentifiers.etco.md) | | [TagAliases](./node-id3.tagaliases.md)\["eventTimingCodes"\] | _(Optional)_ | +| [POPM?](./node-id3.tagidentifiers.popm.md) | | [TagAliases](./node-id3.tagaliases.md)\["popularimeter"\] | _(Optional)_ | +| [PRIV?](./node-id3.tagidentifiers.priv.md) | | [TagAliases](./node-id3.tagaliases.md)\["private"\] | _(Optional)_ | +| [SYLT?](./node-id3.tagidentifiers.sylt.md) | | [TagAliases](./node-id3.tagaliases.md)\["synchronisedLyrics"\] | _(Optional)_ | +| [TALB?](./node-id3.tagidentifiers.talb.md) | | [TagAliases](./node-id3.tagaliases.md)\["album"\] | _(Optional)_ | +| [TBPM?](./node-id3.tagidentifiers.tbpm.md) | | [TagAliases](./node-id3.tagaliases.md)\["bpm"\] | _(Optional)_ | +| [TCOM?](./node-id3.tagidentifiers.tcom.md) | | [TagAliases](./node-id3.tagaliases.md)\["composer"\] | _(Optional)_ | +| [TCON?](./node-id3.tagidentifiers.tcon.md) | | [TagAliases](./node-id3.tagaliases.md)\["genre"\] | _(Optional)_ | +| [TCOP?](./node-id3.tagidentifiers.tcop.md) | | [TagAliases](./node-id3.tagaliases.md)\["copyright"\] | _(Optional)_ | +| [TDAT?](./node-id3.tagidentifiers.tdat.md) | | [TagAliases](./node-id3.tagaliases.md)\["date"\] | _(Optional)_ | +| [TDEN?](./node-id3.tagidentifiers.tden.md) | | [TagAliases](./node-id3.tagaliases.md)\["encodingTime"\] | _(Optional)_ | +| [TDLY?](./node-id3.tagidentifiers.tdly.md) | | [TagAliases](./node-id3.tagaliases.md)\["playlistDelay"\] | _(Optional)_ | +| [TDOR?](./node-id3.tagidentifiers.tdor.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalReleaseTime"\] | _(Optional)_ | +| [TDRC?](./node-id3.tagidentifiers.tdrc.md) | | [TagAliases](./node-id3.tagaliases.md)\["recordingTime"\] | _(Optional)_ | +| [TDRL?](./node-id3.tagidentifiers.tdrl.md) | | [TagAliases](./node-id3.tagaliases.md)\["releaseTime"\] | _(Optional)_ | +| [TDTG?](./node-id3.tagidentifiers.tdtg.md) | | [TagAliases](./node-id3.tagaliases.md)\["taggingTime"\] | _(Optional)_ | +| [TENC?](./node-id3.tagidentifiers.tenc.md) | | [TagAliases](./node-id3.tagaliases.md)\["encodedBy"\] | _(Optional)_ | +| [TEXT?](./node-id3.tagidentifiers.text.md) | | [TagAliases](./node-id3.tagaliases.md)\["textWriter"\] | _(Optional)_ | +| [TFLT?](./node-id3.tagidentifiers.tflt.md) | | [TagAliases](./node-id3.tagaliases.md)\["fileType"\] | _(Optional)_ | +| [TIME?](./node-id3.tagidentifiers.time.md) | | [TagAliases](./node-id3.tagaliases.md)\["time"\] | _(Optional)_ | +| [TIPL?](./node-id3.tagidentifiers.tipl.md) | | [TagAliases](./node-id3.tagaliases.md)\["involvedPeopleList"\] | _(Optional)_ | +| [TIT1?](./node-id3.tagidentifiers.tit1.md) | | [TagAliases](./node-id3.tagaliases.md)\["contentGroup"\] | _(Optional)_ | +| [TIT2?](./node-id3.tagidentifiers.tit2.md) | | [TagAliases](./node-id3.tagaliases.md)\["title"\] | _(Optional)_ | +| [TIT3?](./node-id3.tagidentifiers.tit3.md) | | [TagAliases](./node-id3.tagaliases.md)\["subtitle"\] | _(Optional)_ | +| [TKEY?](./node-id3.tagidentifiers.tkey.md) | | [TagAliases](./node-id3.tagaliases.md)\["initialKey"\] | _(Optional)_ | +| [TLAN?](./node-id3.tagidentifiers.tlan.md) | | [TagAliases](./node-id3.tagaliases.md)\["language"\] | _(Optional)_ | +| [TLEN?](./node-id3.tagidentifiers.tlen.md) | | [TagAliases](./node-id3.tagaliases.md)\["length"\] | _(Optional)_ | +| [TMCL?](./node-id3.tagidentifiers.tmcl.md) | | [TagAliases](./node-id3.tagaliases.md)\["musicianCreditsList"\] | _(Optional)_ | +| [TMED?](./node-id3.tagidentifiers.tmed.md) | | [TagAliases](./node-id3.tagaliases.md)\["mediaType"\] | _(Optional)_ | +| [TMOO?](./node-id3.tagidentifiers.tmoo.md) | | [TagAliases](./node-id3.tagaliases.md)\["mood"\] | _(Optional)_ | +| [TOAL?](./node-id3.tagidentifiers.toal.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalTitle"\] | _(Optional)_ | +| [TOFN?](./node-id3.tagidentifiers.tofn.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalFilename"\] | _(Optional)_ | +| [TOLY?](./node-id3.tagidentifiers.toly.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalTextwriter"\] | _(Optional)_ | +| [TOPE?](./node-id3.tagidentifiers.tope.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalArtist"\] | _(Optional)_ | +| [TORY?](./node-id3.tagidentifiers.tory.md) | | [TagAliases](./node-id3.tagaliases.md)\["originalYear"\] | _(Optional)_ | +| [TOWN?](./node-id3.tagidentifiers.town.md) | | [TagAliases](./node-id3.tagaliases.md)\["fileOwner"\] | _(Optional)_ | +| [TPE1?](./node-id3.tagidentifiers.tpe1.md) | | [TagAliases](./node-id3.tagaliases.md)\["artist"\] | _(Optional)_ | +| [TPE2?](./node-id3.tagidentifiers.tpe2.md) | | [TagAliases](./node-id3.tagaliases.md)\["performerInfo"\] | _(Optional)_ | +| [TPE3?](./node-id3.tagidentifiers.tpe3.md) | | [TagAliases](./node-id3.tagaliases.md)\["conductor"\] | _(Optional)_ | +| [TPE4?](./node-id3.tagidentifiers.tpe4.md) | | [TagAliases](./node-id3.tagaliases.md)\["remixArtist"\] | _(Optional)_ | +| [TPOS?](./node-id3.tagidentifiers.tpos.md) | | [TagAliases](./node-id3.tagaliases.md)\["partOfSet"\] | _(Optional)_ | +| [TPRO?](./node-id3.tagidentifiers.tpro.md) | | [TagAliases](./node-id3.tagaliases.md)\["producedNotice"\] | _(Optional)_ | +| [TPUB?](./node-id3.tagidentifiers.tpub.md) | | [TagAliases](./node-id3.tagaliases.md)\["publisher"\] | _(Optional)_ | +| [TRCK?](./node-id3.tagidentifiers.trck.md) | | [TagAliases](./node-id3.tagaliases.md)\["trackNumber"\] | _(Optional)_ | +| [TRDA?](./node-id3.tagidentifiers.trda.md) | | [TagAliases](./node-id3.tagaliases.md)\["recordingDates"\] | _(Optional)_ | +| [TRSN?](./node-id3.tagidentifiers.trsn.md) | | [TagAliases](./node-id3.tagaliases.md)\["internetRadioName"\] | _(Optional)_ | +| [TRSO?](./node-id3.tagidentifiers.trso.md) | | [TagAliases](./node-id3.tagaliases.md)\["internetRadioOwner"\] | _(Optional)_ | +| [TSIZ?](./node-id3.tagidentifiers.tsiz.md) | | [TagAliases](./node-id3.tagaliases.md)\["size"\] | _(Optional)_ | +| [TSOA?](./node-id3.tagidentifiers.tsoa.md) | | [TagAliases](./node-id3.tagaliases.md)\["albumSortOrder"\] | _(Optional)_ | +| [TSOP?](./node-id3.tagidentifiers.tsop.md) | | [TagAliases](./node-id3.tagaliases.md)\["performerSortOrder"\] | _(Optional)_ | +| [TSOT?](./node-id3.tagidentifiers.tsot.md) | | [TagAliases](./node-id3.tagaliases.md)\["titleSortOrder"\] | _(Optional)_ | +| [TSRC?](./node-id3.tagidentifiers.tsrc.md) | | [TagAliases](./node-id3.tagaliases.md)\["ISRC"\] | _(Optional)_ | +| [TSSE?](./node-id3.tagidentifiers.tsse.md) | | [TagAliases](./node-id3.tagaliases.md)\["encodingTechnology"\] | _(Optional)_ | +| [TSST?](./node-id3.tagidentifiers.tsst.md) | | [TagAliases](./node-id3.tagaliases.md)\["setSubtitle"\] | _(Optional)_ | +| [TXXX?](./node-id3.tagidentifiers.txxx.md) | | [TagAliases](./node-id3.tagaliases.md)\["userDefinedText"\] | _(Optional)_ | +| [TYER?](./node-id3.tagidentifiers.tyer.md) | | [TagAliases](./node-id3.tagaliases.md)\["year"\] | _(Optional)_ | +| [UFID?](./node-id3.tagidentifiers.ufid.md) | | [TagAliases](./node-id3.tagaliases.md)\["uniqueFileIdentifier"\] | _(Optional)_ | +| [USLT?](./node-id3.tagidentifiers.uslt.md) | | [TagAliases](./node-id3.tagaliases.md)\["unsynchronisedLyrics"\] | _(Optional)_ | +| [WCOM?](./node-id3.tagidentifiers.wcom.md) | | [TagAliases](./node-id3.tagaliases.md)\["commercialUrl"\] | _(Optional)_ | +| [WCOP?](./node-id3.tagidentifiers.wcop.md) | | [TagAliases](./node-id3.tagaliases.md)\["copyrightUrl"\] | _(Optional)_ | +| [WOAF?](./node-id3.tagidentifiers.woaf.md) | | [TagAliases](./node-id3.tagaliases.md)\["fileUrl"\] | _(Optional)_ | +| [WOAR?](./node-id3.tagidentifiers.woar.md) | | [TagAliases](./node-id3.tagaliases.md)\["artistUrl"\] | _(Optional)_ | +| [WOAS?](./node-id3.tagidentifiers.woas.md) | | [TagAliases](./node-id3.tagaliases.md)\["audioSourceUrl"\] | _(Optional)_ | +| [WORS?](./node-id3.tagidentifiers.wors.md) | | [TagAliases](./node-id3.tagaliases.md)\["radioStationUrl"\] | _(Optional)_ | +| [WPAY?](./node-id3.tagidentifiers.wpay.md) | | [TagAliases](./node-id3.tagaliases.md)\["paymentUrl"\] | _(Optional)_ | +| [WPUB?](./node-id3.tagidentifiers.wpub.md) | | [TagAliases](./node-id3.tagaliases.md)\["publisherUrl"\] | _(Optional)_ | +| [WXXX?](./node-id3.tagidentifiers.wxxx.md) | | [TagAliases](./node-id3.tagaliases.md)\["userDefinedUrl"\] | _(Optional)_ | + diff --git a/doc/node-id3.tagidentifiers.popm.md b/doc/node-id3.tagidentifiers.popm.md new file mode 100644 index 0000000..e21b1f7 --- /dev/null +++ b/doc/node-id3.tagidentifiers.popm.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [POPM](./node-id3.tagidentifiers.popm.md) + +## TagIdentifiers.POPM property + +**Signature:** + +```typescript +POPM?: TagAliases["popularimeter"]; +``` diff --git a/doc/node-id3.tagidentifiers.priv.md b/doc/node-id3.tagidentifiers.priv.md new file mode 100644 index 0000000..c3c5abc --- /dev/null +++ b/doc/node-id3.tagidentifiers.priv.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [PRIV](./node-id3.tagidentifiers.priv.md) + +## TagIdentifiers.PRIV property + +**Signature:** + +```typescript +PRIV?: TagAliases["private"]; +``` diff --git a/doc/node-id3.tagidentifiers.sylt.md b/doc/node-id3.tagidentifiers.sylt.md new file mode 100644 index 0000000..fe6e7d3 --- /dev/null +++ b/doc/node-id3.tagidentifiers.sylt.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [SYLT](./node-id3.tagidentifiers.sylt.md) + +## TagIdentifiers.SYLT property + +**Signature:** + +```typescript +SYLT?: TagAliases["synchronisedLyrics"]; +``` diff --git a/doc/node-id3.tagidentifiers.talb.md b/doc/node-id3.tagidentifiers.talb.md new file mode 100644 index 0000000..d111f15 --- /dev/null +++ b/doc/node-id3.tagidentifiers.talb.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TALB](./node-id3.tagidentifiers.talb.md) + +## TagIdentifiers.TALB property + +**Signature:** + +```typescript +TALB?: TagAliases["album"]; +``` diff --git a/doc/node-id3.tagidentifiers.tbpm.md b/doc/node-id3.tagidentifiers.tbpm.md new file mode 100644 index 0000000..c6bad67 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tbpm.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TBPM](./node-id3.tagidentifiers.tbpm.md) + +## TagIdentifiers.TBPM property + +**Signature:** + +```typescript +TBPM?: TagAliases["bpm"]; +``` diff --git a/doc/node-id3.tagidentifiers.tcom.md b/doc/node-id3.tagidentifiers.tcom.md new file mode 100644 index 0000000..22a3347 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tcom.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TCOM](./node-id3.tagidentifiers.tcom.md) + +## TagIdentifiers.TCOM property + +**Signature:** + +```typescript +TCOM?: TagAliases["composer"]; +``` diff --git a/doc/node-id3.tagidentifiers.tcon.md b/doc/node-id3.tagidentifiers.tcon.md new file mode 100644 index 0000000..a62352b --- /dev/null +++ b/doc/node-id3.tagidentifiers.tcon.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TCON](./node-id3.tagidentifiers.tcon.md) + +## TagIdentifiers.TCON property + +**Signature:** + +```typescript +TCON?: TagAliases["genre"]; +``` diff --git a/doc/node-id3.tagidentifiers.tcop.md b/doc/node-id3.tagidentifiers.tcop.md new file mode 100644 index 0000000..96f0d9c --- /dev/null +++ b/doc/node-id3.tagidentifiers.tcop.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TCOP](./node-id3.tagidentifiers.tcop.md) + +## TagIdentifiers.TCOP property + +**Signature:** + +```typescript +TCOP?: TagAliases["copyright"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdat.md b/doc/node-id3.tagidentifiers.tdat.md new file mode 100644 index 0000000..4d41ae8 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdat.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDAT](./node-id3.tagidentifiers.tdat.md) + +## TagIdentifiers.TDAT property + +**Signature:** + +```typescript +TDAT?: TagAliases["date"]; +``` diff --git a/doc/node-id3.tagidentifiers.tden.md b/doc/node-id3.tagidentifiers.tden.md new file mode 100644 index 0000000..91b5e6e --- /dev/null +++ b/doc/node-id3.tagidentifiers.tden.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDEN](./node-id3.tagidentifiers.tden.md) + +## TagIdentifiers.TDEN property + +**Signature:** + +```typescript +TDEN?: TagAliases["encodingTime"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdly.md b/doc/node-id3.tagidentifiers.tdly.md new file mode 100644 index 0000000..15e200b --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdly.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDLY](./node-id3.tagidentifiers.tdly.md) + +## TagIdentifiers.TDLY property + +**Signature:** + +```typescript +TDLY?: TagAliases["playlistDelay"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdor.md b/doc/node-id3.tagidentifiers.tdor.md new file mode 100644 index 0000000..f51de6d --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdor.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDOR](./node-id3.tagidentifiers.tdor.md) + +## TagIdentifiers.TDOR property + +**Signature:** + +```typescript +TDOR?: TagAliases["originalReleaseTime"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdrc.md b/doc/node-id3.tagidentifiers.tdrc.md new file mode 100644 index 0000000..6a299e0 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdrc.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDRC](./node-id3.tagidentifiers.tdrc.md) + +## TagIdentifiers.TDRC property + +**Signature:** + +```typescript +TDRC?: TagAliases["recordingTime"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdrl.md b/doc/node-id3.tagidentifiers.tdrl.md new file mode 100644 index 0000000..ede3ea3 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdrl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDRL](./node-id3.tagidentifiers.tdrl.md) + +## TagIdentifiers.TDRL property + +**Signature:** + +```typescript +TDRL?: TagAliases["releaseTime"]; +``` diff --git a/doc/node-id3.tagidentifiers.tdtg.md b/doc/node-id3.tagidentifiers.tdtg.md new file mode 100644 index 0000000..7bfbe33 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tdtg.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TDTG](./node-id3.tagidentifiers.tdtg.md) + +## TagIdentifiers.TDTG property + +**Signature:** + +```typescript +TDTG?: TagAliases["taggingTime"]; +``` diff --git a/doc/node-id3.tagidentifiers.tenc.md b/doc/node-id3.tagidentifiers.tenc.md new file mode 100644 index 0000000..6c51c6d --- /dev/null +++ b/doc/node-id3.tagidentifiers.tenc.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TENC](./node-id3.tagidentifiers.tenc.md) + +## TagIdentifiers.TENC property + +**Signature:** + +```typescript +TENC?: TagAliases["encodedBy"]; +``` diff --git a/doc/node-id3.tagidentifiers.text.md b/doc/node-id3.tagidentifiers.text.md new file mode 100644 index 0000000..b853073 --- /dev/null +++ b/doc/node-id3.tagidentifiers.text.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TEXT](./node-id3.tagidentifiers.text.md) + +## TagIdentifiers.TEXT property + +**Signature:** + +```typescript +TEXT?: TagAliases["textWriter"]; +``` diff --git a/doc/node-id3.tagidentifiers.tflt.md b/doc/node-id3.tagidentifiers.tflt.md new file mode 100644 index 0000000..84a6d2c --- /dev/null +++ b/doc/node-id3.tagidentifiers.tflt.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TFLT](./node-id3.tagidentifiers.tflt.md) + +## TagIdentifiers.TFLT property + +**Signature:** + +```typescript +TFLT?: TagAliases["fileType"]; +``` diff --git a/doc/node-id3.tagidentifiers.time.md b/doc/node-id3.tagidentifiers.time.md new file mode 100644 index 0000000..3c14e06 --- /dev/null +++ b/doc/node-id3.tagidentifiers.time.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TIME](./node-id3.tagidentifiers.time.md) + +## TagIdentifiers.TIME property + +**Signature:** + +```typescript +TIME?: TagAliases["time"]; +``` diff --git a/doc/node-id3.tagidentifiers.tipl.md b/doc/node-id3.tagidentifiers.tipl.md new file mode 100644 index 0000000..87e6e2b --- /dev/null +++ b/doc/node-id3.tagidentifiers.tipl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TIPL](./node-id3.tagidentifiers.tipl.md) + +## TagIdentifiers.TIPL property + +**Signature:** + +```typescript +TIPL?: TagAliases["involvedPeopleList"]; +``` diff --git a/doc/node-id3.tagidentifiers.tit1.md b/doc/node-id3.tagidentifiers.tit1.md new file mode 100644 index 0000000..3020bab --- /dev/null +++ b/doc/node-id3.tagidentifiers.tit1.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TIT1](./node-id3.tagidentifiers.tit1.md) + +## TagIdentifiers.TIT1 property + +**Signature:** + +```typescript +TIT1?: TagAliases["contentGroup"]; +``` diff --git a/doc/node-id3.tagidentifiers.tit2.md b/doc/node-id3.tagidentifiers.tit2.md new file mode 100644 index 0000000..64d83f1 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tit2.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TIT2](./node-id3.tagidentifiers.tit2.md) + +## TagIdentifiers.TIT2 property + +**Signature:** + +```typescript +TIT2?: TagAliases["title"]; +``` diff --git a/doc/node-id3.tagidentifiers.tit3.md b/doc/node-id3.tagidentifiers.tit3.md new file mode 100644 index 0000000..0b3994f --- /dev/null +++ b/doc/node-id3.tagidentifiers.tit3.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TIT3](./node-id3.tagidentifiers.tit3.md) + +## TagIdentifiers.TIT3 property + +**Signature:** + +```typescript +TIT3?: TagAliases["subtitle"]; +``` diff --git a/doc/node-id3.tagidentifiers.tkey.md b/doc/node-id3.tagidentifiers.tkey.md new file mode 100644 index 0000000..ae0798e --- /dev/null +++ b/doc/node-id3.tagidentifiers.tkey.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TKEY](./node-id3.tagidentifiers.tkey.md) + +## TagIdentifiers.TKEY property + +**Signature:** + +```typescript +TKEY?: TagAliases["initialKey"]; +``` diff --git a/doc/node-id3.tagidentifiers.tlan.md b/doc/node-id3.tagidentifiers.tlan.md new file mode 100644 index 0000000..b387eeb --- /dev/null +++ b/doc/node-id3.tagidentifiers.tlan.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TLAN](./node-id3.tagidentifiers.tlan.md) + +## TagIdentifiers.TLAN property + +**Signature:** + +```typescript +TLAN?: TagAliases["language"]; +``` diff --git a/doc/node-id3.tagidentifiers.tlen.md b/doc/node-id3.tagidentifiers.tlen.md new file mode 100644 index 0000000..90a4369 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tlen.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TLEN](./node-id3.tagidentifiers.tlen.md) + +## TagIdentifiers.TLEN property + +**Signature:** + +```typescript +TLEN?: TagAliases["length"]; +``` diff --git a/doc/node-id3.tagidentifiers.tmcl.md b/doc/node-id3.tagidentifiers.tmcl.md new file mode 100644 index 0000000..da3a823 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tmcl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TMCL](./node-id3.tagidentifiers.tmcl.md) + +## TagIdentifiers.TMCL property + +**Signature:** + +```typescript +TMCL?: TagAliases["musicianCreditsList"]; +``` diff --git a/doc/node-id3.tagidentifiers.tmed.md b/doc/node-id3.tagidentifiers.tmed.md new file mode 100644 index 0000000..551757f --- /dev/null +++ b/doc/node-id3.tagidentifiers.tmed.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TMED](./node-id3.tagidentifiers.tmed.md) + +## TagIdentifiers.TMED property + +**Signature:** + +```typescript +TMED?: TagAliases["mediaType"]; +``` diff --git a/doc/node-id3.tagidentifiers.tmoo.md b/doc/node-id3.tagidentifiers.tmoo.md new file mode 100644 index 0000000..1fa2628 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tmoo.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TMOO](./node-id3.tagidentifiers.tmoo.md) + +## TagIdentifiers.TMOO property + +**Signature:** + +```typescript +TMOO?: TagAliases["mood"]; +``` diff --git a/doc/node-id3.tagidentifiers.toal.md b/doc/node-id3.tagidentifiers.toal.md new file mode 100644 index 0000000..63e60ef --- /dev/null +++ b/doc/node-id3.tagidentifiers.toal.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TOAL](./node-id3.tagidentifiers.toal.md) + +## TagIdentifiers.TOAL property + +**Signature:** + +```typescript +TOAL?: TagAliases["originalTitle"]; +``` diff --git a/doc/node-id3.tagidentifiers.tofn.md b/doc/node-id3.tagidentifiers.tofn.md new file mode 100644 index 0000000..3cfd184 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tofn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TOFN](./node-id3.tagidentifiers.tofn.md) + +## TagIdentifiers.TOFN property + +**Signature:** + +```typescript +TOFN?: TagAliases["originalFilename"]; +``` diff --git a/doc/node-id3.tagidentifiers.toly.md b/doc/node-id3.tagidentifiers.toly.md new file mode 100644 index 0000000..5ade7ad --- /dev/null +++ b/doc/node-id3.tagidentifiers.toly.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TOLY](./node-id3.tagidentifiers.toly.md) + +## TagIdentifiers.TOLY property + +**Signature:** + +```typescript +TOLY?: TagAliases["originalTextwriter"]; +``` diff --git a/doc/node-id3.tagidentifiers.tope.md b/doc/node-id3.tagidentifiers.tope.md new file mode 100644 index 0000000..f25bc7a --- /dev/null +++ b/doc/node-id3.tagidentifiers.tope.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TOPE](./node-id3.tagidentifiers.tope.md) + +## TagIdentifiers.TOPE property + +**Signature:** + +```typescript +TOPE?: TagAliases["originalArtist"]; +``` diff --git a/doc/node-id3.tagidentifiers.tory.md b/doc/node-id3.tagidentifiers.tory.md new file mode 100644 index 0000000..3e0e38c --- /dev/null +++ b/doc/node-id3.tagidentifiers.tory.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TORY](./node-id3.tagidentifiers.tory.md) + +## TagIdentifiers.TORY property + +**Signature:** + +```typescript +TORY?: TagAliases["originalYear"]; +``` diff --git a/doc/node-id3.tagidentifiers.town.md b/doc/node-id3.tagidentifiers.town.md new file mode 100644 index 0000000..dbe322a --- /dev/null +++ b/doc/node-id3.tagidentifiers.town.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TOWN](./node-id3.tagidentifiers.town.md) + +## TagIdentifiers.TOWN property + +**Signature:** + +```typescript +TOWN?: TagAliases["fileOwner"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpe1.md b/doc/node-id3.tagidentifiers.tpe1.md new file mode 100644 index 0000000..7f460fa --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpe1.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPE1](./node-id3.tagidentifiers.tpe1.md) + +## TagIdentifiers.TPE1 property + +**Signature:** + +```typescript +TPE1?: TagAliases["artist"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpe2.md b/doc/node-id3.tagidentifiers.tpe2.md new file mode 100644 index 0000000..619fa79 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpe2.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPE2](./node-id3.tagidentifiers.tpe2.md) + +## TagIdentifiers.TPE2 property + +**Signature:** + +```typescript +TPE2?: TagAliases["performerInfo"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpe3.md b/doc/node-id3.tagidentifiers.tpe3.md new file mode 100644 index 0000000..dfc5cf9 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpe3.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPE3](./node-id3.tagidentifiers.tpe3.md) + +## TagIdentifiers.TPE3 property + +**Signature:** + +```typescript +TPE3?: TagAliases["conductor"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpe4.md b/doc/node-id3.tagidentifiers.tpe4.md new file mode 100644 index 0000000..2c234f0 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpe4.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPE4](./node-id3.tagidentifiers.tpe4.md) + +## TagIdentifiers.TPE4 property + +**Signature:** + +```typescript +TPE4?: TagAliases["remixArtist"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpos.md b/doc/node-id3.tagidentifiers.tpos.md new file mode 100644 index 0000000..002b7cd --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpos.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPOS](./node-id3.tagidentifiers.tpos.md) + +## TagIdentifiers.TPOS property + +**Signature:** + +```typescript +TPOS?: TagAliases["partOfSet"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpro.md b/doc/node-id3.tagidentifiers.tpro.md new file mode 100644 index 0000000..38bfe80 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpro.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPRO](./node-id3.tagidentifiers.tpro.md) + +## TagIdentifiers.TPRO property + +**Signature:** + +```typescript +TPRO?: TagAliases["producedNotice"]; +``` diff --git a/doc/node-id3.tagidentifiers.tpub.md b/doc/node-id3.tagidentifiers.tpub.md new file mode 100644 index 0000000..66bfb76 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tpub.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TPUB](./node-id3.tagidentifiers.tpub.md) + +## TagIdentifiers.TPUB property + +**Signature:** + +```typescript +TPUB?: TagAliases["publisher"]; +``` diff --git a/doc/node-id3.tagidentifiers.trck.md b/doc/node-id3.tagidentifiers.trck.md new file mode 100644 index 0000000..ab02902 --- /dev/null +++ b/doc/node-id3.tagidentifiers.trck.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TRCK](./node-id3.tagidentifiers.trck.md) + +## TagIdentifiers.TRCK property + +**Signature:** + +```typescript +TRCK?: TagAliases["trackNumber"]; +``` diff --git a/doc/node-id3.tagidentifiers.trda.md b/doc/node-id3.tagidentifiers.trda.md new file mode 100644 index 0000000..1a7cdce --- /dev/null +++ b/doc/node-id3.tagidentifiers.trda.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TRDA](./node-id3.tagidentifiers.trda.md) + +## TagIdentifiers.TRDA property + +**Signature:** + +```typescript +TRDA?: TagAliases["recordingDates"]; +``` diff --git a/doc/node-id3.tagidentifiers.trsn.md b/doc/node-id3.tagidentifiers.trsn.md new file mode 100644 index 0000000..847e50f --- /dev/null +++ b/doc/node-id3.tagidentifiers.trsn.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TRSN](./node-id3.tagidentifiers.trsn.md) + +## TagIdentifiers.TRSN property + +**Signature:** + +```typescript +TRSN?: TagAliases["internetRadioName"]; +``` diff --git a/doc/node-id3.tagidentifiers.trso.md b/doc/node-id3.tagidentifiers.trso.md new file mode 100644 index 0000000..b4eb3af --- /dev/null +++ b/doc/node-id3.tagidentifiers.trso.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TRSO](./node-id3.tagidentifiers.trso.md) + +## TagIdentifiers.TRSO property + +**Signature:** + +```typescript +TRSO?: TagAliases["internetRadioOwner"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsiz.md b/doc/node-id3.tagidentifiers.tsiz.md new file mode 100644 index 0000000..65ca2ed --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsiz.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSIZ](./node-id3.tagidentifiers.tsiz.md) + +## TagIdentifiers.TSIZ property + +**Signature:** + +```typescript +TSIZ?: TagAliases["size"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsoa.md b/doc/node-id3.tagidentifiers.tsoa.md new file mode 100644 index 0000000..05ccccd --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsoa.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSOA](./node-id3.tagidentifiers.tsoa.md) + +## TagIdentifiers.TSOA property + +**Signature:** + +```typescript +TSOA?: TagAliases["albumSortOrder"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsop.md b/doc/node-id3.tagidentifiers.tsop.md new file mode 100644 index 0000000..83d437a --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsop.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSOP](./node-id3.tagidentifiers.tsop.md) + +## TagIdentifiers.TSOP property + +**Signature:** + +```typescript +TSOP?: TagAliases["performerSortOrder"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsot.md b/doc/node-id3.tagidentifiers.tsot.md new file mode 100644 index 0000000..646db72 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsot.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSOT](./node-id3.tagidentifiers.tsot.md) + +## TagIdentifiers.TSOT property + +**Signature:** + +```typescript +TSOT?: TagAliases["titleSortOrder"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsrc.md b/doc/node-id3.tagidentifiers.tsrc.md new file mode 100644 index 0000000..758dca6 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsrc.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSRC](./node-id3.tagidentifiers.tsrc.md) + +## TagIdentifiers.TSRC property + +**Signature:** + +```typescript +TSRC?: TagAliases["ISRC"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsse.md b/doc/node-id3.tagidentifiers.tsse.md new file mode 100644 index 0000000..9231870 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsse.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSSE](./node-id3.tagidentifiers.tsse.md) + +## TagIdentifiers.TSSE property + +**Signature:** + +```typescript +TSSE?: TagAliases["encodingTechnology"]; +``` diff --git a/doc/node-id3.tagidentifiers.tsst.md b/doc/node-id3.tagidentifiers.tsst.md new file mode 100644 index 0000000..903baa5 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tsst.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TSST](./node-id3.tagidentifiers.tsst.md) + +## TagIdentifiers.TSST property + +**Signature:** + +```typescript +TSST?: TagAliases["setSubtitle"]; +``` diff --git a/doc/node-id3.tagidentifiers.txxx.md b/doc/node-id3.tagidentifiers.txxx.md new file mode 100644 index 0000000..f73a7e0 --- /dev/null +++ b/doc/node-id3.tagidentifiers.txxx.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TXXX](./node-id3.tagidentifiers.txxx.md) + +## TagIdentifiers.TXXX property + +**Signature:** + +```typescript +TXXX?: TagAliases["userDefinedText"]; +``` diff --git a/doc/node-id3.tagidentifiers.tyer.md b/doc/node-id3.tagidentifiers.tyer.md new file mode 100644 index 0000000..38f89f1 --- /dev/null +++ b/doc/node-id3.tagidentifiers.tyer.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [TYER](./node-id3.tagidentifiers.tyer.md) + +## TagIdentifiers.TYER property + +**Signature:** + +```typescript +TYER?: TagAliases["year"]; +``` diff --git a/doc/node-id3.tagidentifiers.ufid.md b/doc/node-id3.tagidentifiers.ufid.md new file mode 100644 index 0000000..c66c566 --- /dev/null +++ b/doc/node-id3.tagidentifiers.ufid.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [UFID](./node-id3.tagidentifiers.ufid.md) + +## TagIdentifiers.UFID property + +**Signature:** + +```typescript +UFID?: TagAliases["uniqueFileIdentifier"]; +``` diff --git a/doc/node-id3.tagidentifiers.uslt.md b/doc/node-id3.tagidentifiers.uslt.md new file mode 100644 index 0000000..0aea473 --- /dev/null +++ b/doc/node-id3.tagidentifiers.uslt.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [USLT](./node-id3.tagidentifiers.uslt.md) + +## TagIdentifiers.USLT property + +**Signature:** + +```typescript +USLT?: TagAliases["unsynchronisedLyrics"]; +``` diff --git a/doc/node-id3.tagidentifiers.wcom.md b/doc/node-id3.tagidentifiers.wcom.md new file mode 100644 index 0000000..bc6d8a5 --- /dev/null +++ b/doc/node-id3.tagidentifiers.wcom.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WCOM](./node-id3.tagidentifiers.wcom.md) + +## TagIdentifiers.WCOM property + +**Signature:** + +```typescript +WCOM?: TagAliases["commercialUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.wcop.md b/doc/node-id3.tagidentifiers.wcop.md new file mode 100644 index 0000000..047b4c1 --- /dev/null +++ b/doc/node-id3.tagidentifiers.wcop.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WCOP](./node-id3.tagidentifiers.wcop.md) + +## TagIdentifiers.WCOP property + +**Signature:** + +```typescript +WCOP?: TagAliases["copyrightUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.woaf.md b/doc/node-id3.tagidentifiers.woaf.md new file mode 100644 index 0000000..838b220 --- /dev/null +++ b/doc/node-id3.tagidentifiers.woaf.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WOAF](./node-id3.tagidentifiers.woaf.md) + +## TagIdentifiers.WOAF property + +**Signature:** + +```typescript +WOAF?: TagAliases["fileUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.woar.md b/doc/node-id3.tagidentifiers.woar.md new file mode 100644 index 0000000..50ca45e --- /dev/null +++ b/doc/node-id3.tagidentifiers.woar.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WOAR](./node-id3.tagidentifiers.woar.md) + +## TagIdentifiers.WOAR property + +**Signature:** + +```typescript +WOAR?: TagAliases["artistUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.woas.md b/doc/node-id3.tagidentifiers.woas.md new file mode 100644 index 0000000..158ea7d --- /dev/null +++ b/doc/node-id3.tagidentifiers.woas.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WOAS](./node-id3.tagidentifiers.woas.md) + +## TagIdentifiers.WOAS property + +**Signature:** + +```typescript +WOAS?: TagAliases["audioSourceUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.wors.md b/doc/node-id3.tagidentifiers.wors.md new file mode 100644 index 0000000..488adc1 --- /dev/null +++ b/doc/node-id3.tagidentifiers.wors.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WORS](./node-id3.tagidentifiers.wors.md) + +## TagIdentifiers.WORS property + +**Signature:** + +```typescript +WORS?: TagAliases["radioStationUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.wpay.md b/doc/node-id3.tagidentifiers.wpay.md new file mode 100644 index 0000000..7fb8e95 --- /dev/null +++ b/doc/node-id3.tagidentifiers.wpay.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WPAY](./node-id3.tagidentifiers.wpay.md) + +## TagIdentifiers.WPAY property + +**Signature:** + +```typescript +WPAY?: TagAliases["paymentUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.wpub.md b/doc/node-id3.tagidentifiers.wpub.md new file mode 100644 index 0000000..66b1a4f --- /dev/null +++ b/doc/node-id3.tagidentifiers.wpub.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WPUB](./node-id3.tagidentifiers.wpub.md) + +## TagIdentifiers.WPUB property + +**Signature:** + +```typescript +WPUB?: TagAliases["publisherUrl"]; +``` diff --git a/doc/node-id3.tagidentifiers.wxxx.md b/doc/node-id3.tagidentifiers.wxxx.md new file mode 100644 index 0000000..119086c --- /dev/null +++ b/doc/node-id3.tagidentifiers.wxxx.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TagIdentifiers](./node-id3.tagidentifiers.md) > [WXXX](./node-id3.tagidentifiers.wxxx.md) + +## TagIdentifiers.WXXX property + +**Signature:** + +```typescript +WXXX?: TagAliases["userDefinedUrl"]; +``` diff --git a/doc/node-id3.tags.md b/doc/node-id3.tags.md new file mode 100644 index 0000000..85ea0d4 --- /dev/null +++ b/doc/node-id3.tags.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Tags](./node-id3.tags.md) + +## Tags interface + + +**Signature:** + +```typescript +export interface Tags extends TagAliases +``` +**Extends:** [TagAliases](./node-id3.tagaliases.md) + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [raw?](./node-id3.tags.raw.md) | | [TagIdentifiers](./node-id3.tagidentifiers.md) | _(Optional)_ | + diff --git a/doc/node-id3.tags.raw.md b/doc/node-id3.tags.raw.md new file mode 100644 index 0000000..d0494c8 --- /dev/null +++ b/doc/node-id3.tags.raw.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [Tags](./node-id3.tags.md) > [raw](./node-id3.tags.raw.md) + +## Tags.raw property + +**Signature:** + +```typescript +raw?: TagIdentifiers; +``` diff --git a/doc/node-id3.typeortypearray.md b/doc/node-id3.typeortypearray.md new file mode 100644 index 0000000..623a083 --- /dev/null +++ b/doc/node-id3.typeortypearray.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [TypeOrTypeArray](./node-id3.typeortypearray.md) + +## TypeOrTypeArray type + +A utility to define an union of the given type or an array of the type. + +**Signature:** + +```typescript +export type TypeOrTypeArray = T | T[]; +``` + +## Remarks + +Used for frames that can have multiple instances. + diff --git a/doc/node-id3.update.md b/doc/node-id3.update.md new file mode 100644 index 0000000..0896323 --- /dev/null +++ b/doc/node-id3.update.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [update](./node-id3.update.md) + +## update() function + +Updates ID3-Tags from the given buffer. + +**Signature:** + +```typescript +export declare function update(tags: WriteTags, buffer: Buffer, options?: Options): Buffer; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| buffer | Buffer | | +| options | [Options](./node-id3.options.md) | _(Optional)_ | + +**Returns:** + +Buffer + diff --git a/doc/node-id3.update_1.md b/doc/node-id3.update_1.md new file mode 100644 index 0000000..9eff51e --- /dev/null +++ b/doc/node-id3.update_1.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [update](./node-id3.update_1.md) + +## update() function + +Updates ID3-Tags synchronously in the specified file. + +**Signature:** + +```typescript +export declare function update(tags: WriteTags, filepath: string, options?: Options): true | Error; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| filepath | string | | +| options | [Options](./node-id3.options.md) | _(Optional)_ | + +**Returns:** + +true \| Error + diff --git a/doc/node-id3.update_2.md b/doc/node-id3.update_2.md new file mode 100644 index 0000000..e4696cb --- /dev/null +++ b/doc/node-id3.update_2.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [update](./node-id3.update_2.md) + +## update() function + +Updates ID3-Tags asynchronously in the specified file. + +**Signature:** + +```typescript +export declare function update(tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| filebuffer | string \| Buffer | | +| callback | [WriteCallback](./node-id3.writecallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.update_3.md b/doc/node-id3.update_3.md new file mode 100644 index 0000000..37fcc02 --- /dev/null +++ b/doc/node-id3.update_3.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [update](./node-id3.update_3.md) + +## update() function + +Updates ID3-Tags asynchronously from the given buffer or specified file. + +**Signature:** + +```typescript +export declare function update(tags: WriteTags, filebuffer: string | Buffer, options: Options, callback: WriteCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| filebuffer | string \| Buffer | | +| options | [Options](./node-id3.options.md) | | +| callback | [WriteCallback](./node-id3.writecallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.write.md b/doc/node-id3.write.md new file mode 100644 index 0000000..61f3188 --- /dev/null +++ b/doc/node-id3.write.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [write](./node-id3.write.md) + +## write() function + +Replaces any existing tags with the given tags in the given buffer. + +**Signature:** + +```typescript +export declare function write(tags: WriteTags, buffer: Buffer): Buffer; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| buffer | Buffer | | + +**Returns:** + +Buffer + diff --git a/doc/node-id3.write_1.md b/doc/node-id3.write_1.md new file mode 100644 index 0000000..fcbb327 --- /dev/null +++ b/doc/node-id3.write_1.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [write](./node-id3.write_1.md) + +## write() function + +Replaces synchronously any existing tags with the given tags in the specified file. + +**Signature:** + +```typescript +export declare function write(tags: WriteTags, filepath: string): true | Error; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| filepath | string | | + +**Returns:** + +true \| Error + diff --git a/doc/node-id3.write_2.md b/doc/node-id3.write_2.md new file mode 100644 index 0000000..321fc47 --- /dev/null +++ b/doc/node-id3.write_2.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [write](./node-id3.write_2.md) + +## write() function + +Replaces asynchronously any existing tags with the given tags in the given buffer or specified file. + +**Signature:** + +```typescript +export declare function write(tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tags | [WriteTags](./node-id3.writetags.md) | | +| filebuffer | string \| Buffer | | +| callback | [WriteCallback](./node-id3.writecallback.md) | | + +**Returns:** + +void + diff --git a/doc/node-id3.writecallback.md b/doc/node-id3.writecallback.md new file mode 100644 index 0000000..523adb5 --- /dev/null +++ b/doc/node-id3.writecallback.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [WriteCallback](./node-id3.writecallback.md) + +## WriteCallback type + +Callback signatures for asynchronous update and write operations. + +**Signature:** + +```typescript +export type WriteCallback = WriteSuccessCallback & WriteErrorCallback; +``` +**References:** [WriteSuccessCallback](./node-id3.writesuccesscallback.md), [WriteErrorCallback](./node-id3.writeerrorcallback.md) + diff --git a/doc/node-id3.writeerrorcallback.md b/doc/node-id3.writeerrorcallback.md new file mode 100644 index 0000000..ed55b55 --- /dev/null +++ b/doc/node-id3.writeerrorcallback.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [WriteErrorCallback](./node-id3.writeerrorcallback.md) + +## WriteErrorCallback type + +Callback signature for failing asynchronous update and write operations. + +**Signature:** + +```typescript +export type WriteErrorCallback = (error: NodeJS.ErrnoException | Error, data: null) => void; +``` diff --git a/doc/node-id3.writesuccesscallback.md b/doc/node-id3.writesuccesscallback.md new file mode 100644 index 0000000..68bc50c --- /dev/null +++ b/doc/node-id3.writesuccesscallback.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [WriteSuccessCallback](./node-id3.writesuccesscallback.md) + +## WriteSuccessCallback type + +Callback signature for successful asynchronous update and write operations. + +**Signature:** + +```typescript +export type WriteSuccessCallback = (error: null, data: Buffer) => void; +``` diff --git a/doc/node-id3.writetags.md b/doc/node-id3.writetags.md new file mode 100644 index 0000000..cf1882f --- /dev/null +++ b/doc/node-id3.writetags.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [node-id3](./node-id3.md) > [WriteTags](./node-id3.writetags.md) + +## WriteTags interface + +On write either a tag alias or tag identifier can be be specified. This is undefined behaviour when both are specified. + +**Signature:** + +```typescript +export interface WriteTags extends TagAliases, TagIdentifiers +``` +**Extends:** [TagAliases](./node-id3.tagaliases.md), [TagIdentifiers](./node-id3.tagidentifiers.md) + diff --git a/etc/node-id3.api.md b/etc/node-id3.api.md new file mode 100644 index 0000000..7c72368 --- /dev/null +++ b/etc/node-id3.api.md @@ -0,0 +1,872 @@ +## API Report File for "node-id3" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +// @public +type Album = string; + +// @public +type AlbumSortOrder = string; + +// @public +type Artist = string; + +// @public +type ArtistUrl = string[]; + +// @public +type AudioSourceUrl = string; + +// @public +type Bpm = string; + +// @public +type Chapter = { + elementID: string; + endTimeMs: number; + startTimeMs: number; + startOffsetBytes?: number; + endOffsetBytes?: number; + tags?: Tags; +}; + +// @public (undocumented) +type Comment = { + language: string; + shortText?: string; + text: string; +}; + +// @public +type CommercialFrame = { + prices: { + [currencyCode: string]: string | number; + }; + validUntil: { + year: number; + month: number; + day: number; + }; + contactUrl?: string; + receivedAs: number; + nameOfSeller?: string; + description?: string; + sellerLogo?: { + mimeType?: string; + picture: string | Buffer; + }; +}; + +// @public +type CommercialUrl = string[]; + +// @public +type Composer = string; + +// @public +type Conductor = string; + +// @public +type ContentGroup = string; + +// @public +type Copyright = string; + +// @public +type CopyrightUrl = string; + +// @public +export function create(tags: WriteTags): Buffer; + +// @public +export function create(tags: WriteTags, callback: CreateCallback): void; + +// @public +export type CreateCallback = (data: Buffer) => void; + +// @public +type EncodedBy = string; + +// @public +type EncodingTechnology = string; + +// @public +type EncodingTime = string; + +// @public +type EventTimingCodes = { + timeStampFormat: Values; + keyEvents: { + type: number; + timeStamp: number; + }[]; +}; + +// @public +type FileOwner = string; + +// @public +type FileType = string; + +// @public +type FileUrl = string; + +// @public +type Genre = string; + +// @public +type Image = string | Buffer | { + mime: string; + type: { + id: number; + name?: string; + }; + description?: string; + imageBuffer: Buffer; +}; + +// @public +type InitialKey = string; + +// @public +type InternetRadioName = string; + +// @public +type InternetRadioOwner = string; + +// @public +type InvolvedPeopleList = string; + +// @public +type ISRC = string; + +// @public +type Language = string; + +// @public +type Length = string; + +// @public +type MediaType = string; + +// @public +type Mood = string; + +// @public +type MusicianCreditsList = string; + +// @public (undocumented) +export interface Options { + exclude?: string[]; + include?: string[]; + noRaw?: boolean; + onlyRaw?: boolean; +} + +// @public +type OriginalArtist = string; + +// @public +type OriginalFilename = string; + +// @public +type OriginalReleaseTime = string; + +// @public +type OriginalTextwriter = string; + +// @public +type OriginalTitle = string; + +// @public +type OriginalYear = string; + +// @public +type PartOfSet = string; + +// @public +type PaymentUrl = string; + +// @public +type PerformerInfo = string; + +// @public +type PerformerSortOrder = string; + +// @public +type PlaylistDelay = string; + +// @public (undocumented) +type Popularimeter = { + email: string; + rating: number; + counter: number; +}; + +// @public (undocumented) +type Private = { + ownerIdentifier: string; + data: Buffer; +}; + +// @public +type ProducedNotice = string; + +// @public +const Promises: { + readonly create: (tags: WriteTags) => Promise; + readonly write: (tags: WriteTags, filebuffer: string | Buffer) => Promise; + readonly update: (tags: WriteTags, filebuffer: string | Buffer, options?: Options) => Promise; + readonly read: (file: string | Buffer, options?: Options) => Promise; + readonly removeTags: (filepath: string) => Promise; +}; +export { Promises as Promise } +export { Promises } + +// @public +type Publisher = string; + +// @public +type PublisherUrl = string; + +// @public +type RadioStationUrl = string; + +// @public +export function read(filebuffer: string | Buffer, options?: Options): Tags; + +// @public +export function read(filebuffer: string | Buffer, callback: ReadCallback): void; + +// @public +export function read(filebuffer: string | Buffer, options: Options, callback: ReadCallback): void; + +// @public +export type ReadCallback = ReadSuccessCallback & ReadErrorCallback; + +// @public +export type ReadErrorCallback = (error: NodeJS.ErrnoException | Error, tags: null) => void; + +// @public +export type ReadSuccessCallback = (error: null, tags: Tags | TagIdentifiers) => void; + +// @public +type RecordingDate = string; + +// @public +type RecordingDates = string; + +// @public +type RecordingTime = string; + +// @public +type ReleaseTime = string; + +// @public +type RemixArtist = string; + +// @public +export type RemoveCallback = (error: NodeJS.ErrnoException | Error | null) => void; + +// @public +export function removeTags(filepath: string): boolean | Error; + +// @public +export function removeTags(filepath: string, callback: RemoveCallback): void; + +// @public +export function removeTagsFromBuffer(data: Buffer): false | Buffer; + +// @public +type SetSubtitle = string; + +// @public +type Size = string; + +// @public +type Subtitle = string; + +// @public +interface SynchronisedLyrics { + contentType: number; + language: string; + shortText?: string; + // (undocumented) + synchronisedText: { + text: string; + timeStamp: number; + }[]; + timeStampFormat: Values; +} + +// @public (undocumented) +type TableOfContents = { + elementID: string; + isOrdered?: boolean; + elements?: string[]; + tags?: Tags; +}; + +// @public (undocumented) +export interface TagAliases { + // (undocumented) + album?: TagFrames.Album; + // (undocumented) + albumSortOrder?: TagFrames.AlbumSortOrder; + // (undocumented) + artist?: TagFrames.Artist; + // (undocumented) + artistUrl?: TagFrames.ArtistUrl; + // (undocumented) + audioSourceUrl?: TagFrames.AudioSourceUrl; + // (undocumented) + bpm?: TagFrames.Bpm; + // (undocumented) + chapter?: TagFrames.Chapter[]; + // (undocumented) + comment?: TagFrames.Comment; + // (undocumented) + commercialFrame?: TypeOrTypeArray; + // (undocumented) + commercialUrl?: TagFrames.CommercialUrl; + // (undocumented) + composer?: TagFrames.Composer; + // (undocumented) + conductor?: TagFrames.Conductor; + // (undocumented) + contentGroup?: TagFrames.ContentGroup; + // (undocumented) + copyright?: TagFrames.Copyright; + // (undocumented) + copyrightUrl?: TagFrames.CopyrightUrl; + // (undocumented) + date?: TagFrames.RecordingDate; + // (undocumented) + encodedBy?: TagFrames.EncodedBy; + // (undocumented) + encodingTechnology?: TagFrames.EncodingTechnology; + // (undocumented) + encodingTime?: TagFrames.EncodingTime; + // (undocumented) + eventTimingCodes?: TagFrames.EventTimingCodes; + // (undocumented) + fileOwner?: TagFrames.FileOwner; + // (undocumented) + fileType?: TagFrames.FileType; + // (undocumented) + fileUrl?: TagFrames.FileUrl; + // (undocumented) + genre?: TagFrames.Genre; + // (undocumented) + image?: TagFrames.Image; + // (undocumented) + initialKey?: TagFrames.InitialKey; + // (undocumented) + internetRadioName?: TagFrames.InternetRadioName; + // (undocumented) + internetRadioOwner?: TagFrames.InternetRadioOwner; + // (undocumented) + involvedPeopleList?: TagFrames.InvolvedPeopleList; + // (undocumented) + ISRC?: TagFrames.ISRC; + // (undocumented) + language?: TagFrames.Language; + // (undocumented) + length?: TagFrames.Length; + // (undocumented) + mediaType?: TagFrames.MediaType; + // (undocumented) + mood?: TagFrames.Mood; + // (undocumented) + musicianCreditsList?: TagFrames.MusicianCreditsList; + // (undocumented) + originalArtist?: TagFrames.OriginalArtist; + // (undocumented) + originalFilename?: TagFrames.OriginalFilename; + // (undocumented) + originalReleaseTime?: TagFrames.OriginalReleaseTime; + // (undocumented) + originalTextwriter?: TagFrames.OriginalTextwriter; + // (undocumented) + originalTitle?: TagFrames.OriginalTitle; + // (undocumented) + originalYear?: TagFrames.OriginalYear; + // (undocumented) + partOfSet?: TagFrames.PartOfSet; + // (undocumented) + paymentUrl?: TagFrames.PaymentUrl; + // (undocumented) + performerInfo?: TagFrames.PerformerInfo; + // (undocumented) + performerSortOrder?: TagFrames.PerformerSortOrder; + // (undocumented) + playlistDelay?: TagFrames.PlaylistDelay; + // (undocumented) + popularimeter?: TagFrames.Popularimeter; + // (undocumented) + private?: TypeOrTypeArray; + // (undocumented) + producedNotice?: TagFrames.ProducedNotice; + // (undocumented) + publisher?: TagFrames.Publisher; + // (undocumented) + publisherUrl?: TagFrames.PublisherUrl; + // (undocumented) + radioStationUrl?: TagFrames.RadioStationUrl; + // (undocumented) + recordingDates?: TagFrames.RecordingDates; + // (undocumented) + recordingTime?: TagFrames.RecordingTime; + // (undocumented) + releaseTime?: TagFrames.ReleaseTime; + // (undocumented) + remixArtist?: TagFrames.RemixArtist; + // (undocumented) + setSubtitle?: TagFrames.SetSubtitle; + // (undocumented) + size?: TagFrames.Size; + // (undocumented) + subtitle?: TagFrames.Subtitle; + // (undocumented) + synchronisedLyrics?: TypeOrTypeArray; + // (undocumented) + tableOfContents?: TagFrames.TableOfContents[]; + // (undocumented) + taggingTime?: TagFrames.TaggingTime; + // (undocumented) + textWriter?: TagFrames.TextWriter; + // (undocumented) + time?: TagFrames.Time; + // (undocumented) + title?: TagFrames.Title; + // (undocumented) + titleSortOrder?: TagFrames.TitleSortOrder; + // (undocumented) + trackNumber?: TagFrames.TrackNumber; + // (undocumented) + uniqueFileIdentifier?: TypeOrTypeArray; + // (undocumented) + unsynchronisedLyrics?: TypeOrTypeArray; + // (undocumented) + userDefinedText?: TypeOrTypeArray; + // (undocumented) + userDefinedUrl?: TypeOrTypeArray; + // (undocumented) + year?: TagFrames.Year; +} + +// @public (undocumented) +export type TagConstants = typeof TagConstants; + +// @public +export const TagConstants: { + readonly TimeStampFormat: { + readonly MPEG_FRAMES: 1; + readonly MILLISECONDS: 2; + }; + readonly EventTimingCodes: { + readonly EventType: { + readonly PADDING: 0; + readonly END_OF_INITIAL_SILENCE: 1; + readonly INTRO_START: 2; + readonly MAINPART_START: 3; + readonly OUTRO_START: 4; + readonly OUTRO_END: 5; + readonly VERSE_START: 6; + readonly REFRAIN_START: 7; + readonly INTERLUDE_START: 8; + readonly THEME_START: 9; + readonly VARIATION_START: 10; + readonly KEY_CHANGE: 11; + readonly TIME_CHANGE: 12; + readonly MOMENTARY_UNWANTED_NOISE: 13; + readonly SUSTAINED_NOISE: 14; + readonly SUSTAINED_NOISE_END: 15; + readonly INTRO_END: 16; + readonly MAINPART_END: 17; + readonly VERSE_END: 18; + readonly REFRAIN_END: 19; + readonly THEME_END: 20; + readonly RESERVED_1: 21; + readonly NOT_PREDEFINED_SYNC: 224; + readonly RESERVED_2: 240; + readonly AUDIO_END: 253; + readonly AUDIO_FILE_ENDS: 254; + readonly ONE_MORE_BYTE_FOLLOWS: 255; + }; + }; + readonly SynchronisedLyrics: { + readonly ContentType: { + readonly OTHER: 0; + readonly LYRICS: 1; + readonly TEXT_TRANSCRIPTION: 2; + readonly MOVEMENT_OR_PART_NAME: 3; + readonly EVENTS: 4; + readonly CHORD: 5; + readonly TRIVIA_OR_POP_UP_INFORMATION: 6; + }; + }; + readonly AttachedPicture: { + readonly PictureType: { + readonly OTHER: 0; + readonly FILE_ICON: 1; + readonly OTHER_FILE_ICON: 2; + readonly FRONT_COVER: 3; + readonly BACK_COVER: 4; + readonly LEAFLET_PAGE: 5; + readonly MEDIA: 6; + readonly LEAD_ARTIST: 7; + readonly ARTIST_OR_PERFORMER: 8; + readonly CONDUCTOR: 9; + readonly BAND_OR_ORCHESTRA: 10; + readonly COMPOSER: 11; + readonly LYRICIST_OR_TEXT_WRITER: 12; + readonly RECORDING_LOCATION: 13; + readonly DURING_RECORDING: 14; + readonly DURING_PERFORMANCE: 15; + readonly MOVIE_OR_VIDEO_SCREEN_CAPTURE: 16; + readonly A_BRIGHT_COLOURED_FISH: 17; + readonly ILLUSTRATION: 18; + readonly BAND_OR_ARTIST_LOGOTYPE: 19; + readonly PUBLISHER_OR_STUDIO_LOGOTYPE: 20; + }; + }; + readonly CommercialFrame: { + readonly ReceivedAs: { + readonly OTHER: 0; + readonly STANDARD_CD_ALBUM_WITH_OTHER_SONGS: 1; + readonly COMPRESSED_AUDIO_ON_CD: 2; + readonly FILE_OVER_THE_INTERNET: 3; + readonly STREAM_OVER_THE_INTERNET: 4; + readonly AS_NOTE_SHEETS: 5; + readonly AS_NOTE_SHEETS_IN_A_BOOK_WITH_OTHER_SHEETS: 6; + readonly MUSIC_ON_OTHER_MEDIA: 7; + readonly NON_MUSICAL_MERCHANDISE: 8; + }; + }; +}; + +declare namespace TagFrames { + export { + Album, + Bpm, + Composer, + Genre, + Copyright, + EncodingTime, + RecordingDate, + PlaylistDelay, + OriginalReleaseTime, + RecordingTime, + ReleaseTime, + TaggingTime, + EncodedBy, + TextWriter, + FileType, + InvolvedPeopleList, + Time, + ContentGroup, + Title, + Subtitle, + InitialKey, + Language, + Length, + MusicianCreditsList, + MediaType, + Mood, + OriginalTitle, + OriginalFilename, + OriginalTextwriter, + OriginalArtist, + OriginalYear, + FileOwner, + Artist, + PerformerInfo, + Conductor, + RemixArtist, + PartOfSet, + ProducedNotice, + Publisher, + TrackNumber, + RecordingDates, + InternetRadioName, + InternetRadioOwner, + AlbumSortOrder, + PerformerSortOrder, + TitleSortOrder, + Size, + ISRC, + EncodingTechnology, + SetSubtitle, + Year, + Comment, + UnsynchronisedLyrics, + SynchronisedLyrics, + UserDefinedText, + Image, + Popularimeter, + Private, + UniqueFileIdentifier, + Chapter, + TableOfContents, + CommercialUrl, + CopyrightUrl, + FileUrl, + ArtistUrl, + AudioSourceUrl, + RadioStationUrl, + PaymentUrl, + PublisherUrl, + UserDefinedUrl, + EventTimingCodes, + CommercialFrame + } +} +export { TagFrames } + +// @public +type TaggingTime = string; + +// @public (undocumented) +export interface TagIdentifiers { + // (undocumented) + APIC?: TagAliases["image"]; + // (undocumented) + CHAP?: TagAliases["chapter"]; + // (undocumented) + COMM?: TagAliases["comment"]; + // (undocumented) + COMR?: TagAliases["commercialFrame"]; + // (undocumented) + CTOC?: TagAliases["tableOfContents"]; + // (undocumented) + ETCO?: TagAliases["eventTimingCodes"]; + // (undocumented) + POPM?: TagAliases["popularimeter"]; + // (undocumented) + PRIV?: TagAliases["private"]; + // (undocumented) + SYLT?: TagAliases["synchronisedLyrics"]; + // (undocumented) + TALB?: TagAliases["album"]; + // (undocumented) + TBPM?: TagAliases["bpm"]; + // (undocumented) + TCOM?: TagAliases["composer"]; + // (undocumented) + TCON?: TagAliases["genre"]; + // (undocumented) + TCOP?: TagAliases["copyright"]; + // (undocumented) + TDAT?: TagAliases["date"]; + // (undocumented) + TDEN?: TagAliases["encodingTime"]; + // (undocumented) + TDLY?: TagAliases["playlistDelay"]; + // (undocumented) + TDOR?: TagAliases["originalReleaseTime"]; + // (undocumented) + TDRC?: TagAliases["recordingTime"]; + // (undocumented) + TDRL?: TagAliases["releaseTime"]; + // (undocumented) + TDTG?: TagAliases["taggingTime"]; + // (undocumented) + TENC?: TagAliases["encodedBy"]; + // (undocumented) + TEXT?: TagAliases["textWriter"]; + // (undocumented) + TFLT?: TagAliases["fileType"]; + // (undocumented) + TIME?: TagAliases["time"]; + // (undocumented) + TIPL?: TagAliases["involvedPeopleList"]; + // (undocumented) + TIT1?: TagAliases["contentGroup"]; + // (undocumented) + TIT2?: TagAliases["title"]; + // (undocumented) + TIT3?: TagAliases["subtitle"]; + // (undocumented) + TKEY?: TagAliases["initialKey"]; + // (undocumented) + TLAN?: TagAliases["language"]; + // (undocumented) + TLEN?: TagAliases["length"]; + // (undocumented) + TMCL?: TagAliases["musicianCreditsList"]; + // (undocumented) + TMED?: TagAliases["mediaType"]; + // (undocumented) + TMOO?: TagAliases["mood"]; + // (undocumented) + TOAL?: TagAliases["originalTitle"]; + // (undocumented) + TOFN?: TagAliases["originalFilename"]; + // (undocumented) + TOLY?: TagAliases["originalTextwriter"]; + // (undocumented) + TOPE?: TagAliases["originalArtist"]; + // (undocumented) + TORY?: TagAliases["originalYear"]; + // (undocumented) + TOWN?: TagAliases["fileOwner"]; + // (undocumented) + TPE1?: TagAliases["artist"]; + // (undocumented) + TPE2?: TagAliases["performerInfo"]; + // (undocumented) + TPE3?: TagAliases["conductor"]; + // (undocumented) + TPE4?: TagAliases["remixArtist"]; + // (undocumented) + TPOS?: TagAliases["partOfSet"]; + // (undocumented) + TPRO?: TagAliases["producedNotice"]; + // (undocumented) + TPUB?: TagAliases["publisher"]; + // (undocumented) + TRCK?: TagAliases["trackNumber"]; + // (undocumented) + TRDA?: TagAliases["recordingDates"]; + // (undocumented) + TRSN?: TagAliases["internetRadioName"]; + // (undocumented) + TRSO?: TagAliases["internetRadioOwner"]; + // (undocumented) + TSIZ?: TagAliases["size"]; + // (undocumented) + TSOA?: TagAliases["albumSortOrder"]; + // (undocumented) + TSOP?: TagAliases["performerSortOrder"]; + // (undocumented) + TSOT?: TagAliases["titleSortOrder"]; + // (undocumented) + TSRC?: TagAliases["ISRC"]; + // (undocumented) + TSSE?: TagAliases["encodingTechnology"]; + // (undocumented) + TSST?: TagAliases["setSubtitle"]; + // (undocumented) + TXXX?: TagAliases["userDefinedText"]; + // (undocumented) + TYER?: TagAliases["year"]; + // (undocumented) + UFID?: TagAliases["uniqueFileIdentifier"]; + // (undocumented) + USLT?: TagAliases["unsynchronisedLyrics"]; + // (undocumented) + WCOM?: TagAliases["commercialUrl"]; + // (undocumented) + WCOP?: TagAliases["copyrightUrl"]; + // (undocumented) + WOAF?: TagAliases["fileUrl"]; + // (undocumented) + WOAR?: TagAliases["artistUrl"]; + // (undocumented) + WOAS?: TagAliases["audioSourceUrl"]; + // (undocumented) + WORS?: TagAliases["radioStationUrl"]; + // (undocumented) + WPAY?: TagAliases["paymentUrl"]; + // (undocumented) + WPUB?: TagAliases["publisherUrl"]; + // (undocumented) + WXXX?: TagAliases["userDefinedUrl"]; +} + +// @public (undocumented) +export interface Tags extends TagAliases { + // (undocumented) + raw?: TagIdentifiers; +} + +// @public +type TextWriter = string; + +// @public +type Time = string; + +// @public +type Title = string; + +// @public +type TitleSortOrder = string; + +// @public +type TrackNumber = string; + +// @public +export type TypeOrTypeArray = T | T[]; + +// @public +type UniqueFileIdentifier = { + ownerIdentifier: string; + identifier: Buffer; +}; + +// @public +interface UnsynchronisedLyrics { + language: string; + shortText?: string; + text: string; +} + +// @public +export function update(tags: WriteTags, buffer: Buffer, options?: Options): Buffer; + +// @public +export function update(tags: WriteTags, filepath: string, options?: Options): true | Error; + +// @public +export function update(tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback): void; + +// @public +export function update(tags: WriteTags, filebuffer: string | Buffer, options: Options, callback: WriteCallback): void; + +// @public (undocumented) +type UserDefinedText = { + description: string; + value: string; +}; + +// @public +type UserDefinedUrl = { + description: string; + url: string; +}; + +// @public +export function write(tags: WriteTags, buffer: Buffer): Buffer; + +// @public +export function write(tags: WriteTags, filepath: string): true | Error; + +// @public +export function write(tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback): void; + +// @public +export type WriteCallback = WriteSuccessCallback & WriteErrorCallback; + +// @public +export type WriteErrorCallback = (error: NodeJS.ErrnoException | Error, data: null) => void; + +// @public +export type WriteSuccessCallback = (error: null, data: Buffer) => void; + +// @public +export interface WriteTags extends TagAliases, TagIdentifiers { +} + +// @public +type Year = string; + +// Warnings were encountered during analysis: +// +// lib/src/types/TagFrames.d.ts:683:5 - (ae-forgotten-export) The symbol "Values" needs to be exported by the entry point index.d.ts + +``` diff --git a/index.ts b/index.ts index 7d24392..cffa50a 100644 --- a/index.ts +++ b/index.ts @@ -1,49 +1,21 @@ -// Used specification: http://id3.org/id3v2.3.0 - -// Types - -export { - Tags, - TagAliases, - TagIdentifiers, - WriteTags -} from "./src/types/Tags" -export { - Options -} from "./src/types/Options" - -// Definitions - -export { - TagConstants -} from './src/definitions/TagConstants' - -// Operations - -export { - create, - CreateCallback -} from "./src/api/create" -export { - read, - ReadCallback -} from "./src/api/read" -export { - removeTags, - removeTagsFromBuffer, - RemoveCallback -} from "./src/api/remove" -export { - update -} from "./src/api/update" -export { - write, - WriteCallback -} from "./src/api/write" - -// Promises - -export { - Promises, - Promise -} from "./src/api/promises" +/** + * An ID3-Tag library written in Typescript. + * + * @remarks + * + * Used specification: {@link http://id3.org/id3v2.3.0 | id3.org v2.3.0}. + * + * @packageDocumentation + */ + +export * from "./src/types/Tags" +export * from "./src/types/Options" + +export * from './src/definitions/TagConstants' + +export * from "./src/api/create" +export * from "./src/api/read" +export * from "./src/api/remove" +export * from "./src/api/update" +export * from "./src/api/write" +export * from "./src/api/promises" diff --git a/package.json b/package.json index ed97ccc..2156f50 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "version": "0.3.0", "description": "Pure JavaScript ID3v2 Tag writer and reader", "author": "Jan Metzger ", - "main": "dist/index.js", - "types": "dist/index.d.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", "repository": { "type": "git", "url": "git+https://github.com/Zazama/node-id3.git" @@ -29,28 +29,37 @@ ], "homepage": "https://github.com/Zazama/node-id3#readme", "directories": { - "test": "dist/test", - "example": "dist/example" + "test": "lib/test", + "example": "lib/example" }, "scripts": { "build": "tsc --build --incremental", - "clean": "rm -rf dist", + "clean": "rm -rf lib temp", + "restore-api": "git clean -f etc doc", "build-watch": "tsc --build --watch --incremental", "test": "mocha test/**/*.ts", "test-watch": "mocha --watch --watch-files src/**/*,test/**/* test/**/*.ts", "test-coverage": "nyc mocha test/**/*.ts", - "prepublishOnly": "npm run clean && tsc", + "prepublishOnly": "npm run clean && npm build-all", "markdownlint-ci": "markdownlint README.md CHANGELOG.md", "markdownlint": "markdownlint --fix README.md CHANGELOG.md", "eslint": "eslint **/*.js **/*.ts", - "eslint-fix": "eslint --fix **/*.js **/*.ts" + "eslint-fix": "eslint --fix **/*.js **/*.ts", + "preapi-extractor": "npx mkdirp ./etc", + "api-extractor": "api-extractor run --local --config ./config/api-extractor.jsonc", + "api-documenter": "api-documenter markdown --input-folder ./temp --output-folder ./doc", + "build-api": "npm run build && npm run api-extractor", + "build-all": "npm run build && npm run api-extractor && npm run api-documenter" }, "license": "MIT", "dependencies": { + "eslint-plugin-tsdoc": "^0.2.17", "iconv-lite": "0.6.2" }, "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.2", + "@microsoft/api-documenter": "^7.19.25", + "@microsoft/api-extractor": "^7.33.6", "@types/chai": "^4.3.4", "@types/chai-as-promised": "^7.1.5", "@types/jsmediatags": "^3.9.3", @@ -61,7 +70,7 @@ "@typescript-eslint/parser": "^5.45.0", "chai": "^4.3.7", "chai-as-promised": "^7.1.1", - "eslint": "^8.28.0", + "eslint": "^8.34.0", "eslint-plugin-mocha": "^10.1.0", "jsmediatags": "^3.9.3", "markdownlint-cli": "^0.32.2", @@ -69,6 +78,6 @@ "nyc": "^15.1.0", "source-map-support": "^0.5.21", "ts-node": "^10.9.1", - "typescript": "^4.9.3" + "typescript": "^4.9.5" } } diff --git a/src/api/create.ts b/src/api/create.ts index a2031f6..fecfa46 100644 --- a/src/api/create.ts +++ b/src/api/create.ts @@ -3,14 +3,28 @@ import { WriteTags } from "../types/Tags" import { isFunction } from "../util" import { createBufferFromTags } from "../TagsHelpers" +/** + * Callback used to return a created ID Tag buffer. + * + * @public + */ export type CreateCallback = (data: Buffer) => void /** - * Creates a buffer containing the ID3 Tag + * Creates a buffer containing an ID3 Tag and returns it. + * + * @public */ export function create(tags: WriteTags): Buffer + +/** + * Creates a buffer containing an ID3 Tag and returns it via the callback. + * + * @public + */ export function create(tags: WriteTags, callback: CreateCallback): void + export function create(tags: WriteTags, callback?: CreateCallback) { const frames = createBufferFromTags(tags) diff --git a/src/api/promises.ts b/src/api/promises.ts index 9ce5d7c..a5eb434 100644 --- a/src/api/promises.ts +++ b/src/api/promises.ts @@ -1,4 +1,4 @@ -import { WriteTags } from '../types/Tags' +import { Tags, TagIdentifiers, WriteTags } from '../types/Tags' import { Options } from '../types/Options' import { create } from "./create" import { read, ReadCallback } from "./read" @@ -27,6 +27,11 @@ function makePromise(callback: (settle: Settle) => void) { }) } +/** + * Asynchronous API for files and buffers operations using promises. + * + * @public + */ export const Promises = { create: (tags: WriteTags) => makePromise((settle: Settle) => @@ -41,7 +46,7 @@ export const Promises = { update(tags, filebuffer, options ?? {}, callback) ), read: (file: string | Buffer, options?: Options) => - makePromise((callback: ReadCallback) => + makePromise((callback: ReadCallback) => read(file, options ?? {}, callback) ), removeTags: (filepath: string) => @@ -54,7 +59,10 @@ export const Promises = { } as const /** - * @deprecated consider using `Promises` instead, `Promise` creates conflict + * Asynchronous API for files and buffers operations using promises. + * + * @public + * @deprecated Consider using `Promises` instead as `Promise` creates conflict * with the Javascript native promise. */ export { Promises as Promise } diff --git a/src/api/read.ts b/src/api/read.ts index 1276fe6..4164727 100644 --- a/src/api/read.ts +++ b/src/api/read.ts @@ -4,19 +4,55 @@ import { isFunction, isString } from '../util' import { Tags, TagIdentifiers } from '../types/Tags' import { Options } from '../types/Options' -export type ReadCallback = { - (error: NodeJS.ErrnoException | Error, tags: null): void - (error: null, tags: Tags | TagIdentifiers): void -} +/** + * Callback signature for successful asynchronous read operation. + * + * @param tags - `TagsIdentifiers` if the `rawOnly` option was true otherwise + * `Tags` + * @public + */ +export type ReadSuccessCallback = + (error: null, tags: Tags | TagIdentifiers) => void + +/** + * Callback signatures for failing asynchronous read operation. + * + * @public + */ +export type ReadErrorCallback = + (error: NodeJS.ErrnoException | Error, tags: null) => void + +/** + * Callback signatures for asynchronous read operation. + * + * @public + */ +export type ReadCallback = + ReadSuccessCallback & ReadErrorCallback /** - * Read ID3-Tags from passed buffer/filepath + * Reads ID3-Tags synchronously from passed buffer/filepath. + * + * @public */ export function read(filebuffer: string | Buffer, options?: Options): Tags + +/** + * Reads ID3-Tags asynchronously from passed buffer/filepath. + * + * @public + */ export function read(filebuffer: string | Buffer, callback: ReadCallback): void + +/** + * Reads ID3-Tags asynchronously from passed buffer/filepath. + * + * @public + */ export function read( filebuffer: string | Buffer, options: Options, callback: ReadCallback ): void + export function read( filebuffer: string | Buffer, optionsOrCallback?: Options | ReadCallback, diff --git a/src/api/remove.ts b/src/api/remove.ts index bc62afc..252abf0 100644 --- a/src/api/remove.ts +++ b/src/api/remove.ts @@ -4,6 +4,8 @@ import { isFunction } from "../util" /** * Remove already written ID3-Frames from a buffer + * + * @public */ export function removeTagsFromBuffer(data: Buffer) { const tagPosition = ID3Util.getTagPosition(data) @@ -32,14 +34,30 @@ export function removeTagsFromBuffer(data: Buffer) { return data } +/** + * Callback signatures for asynchronous remove operation. + * + * @param error - `null` indicates success. + * + * @public + */ export type RemoveCallback = (error: NodeJS.ErrnoException | Error | null) => void /** - * Remove already written ID3-Frames from a file + * Removes synchronously any written ID3-Frames from the specified file. + * + * @public */ export function removeTags(filepath: string): boolean | Error + +/** + * Removes asynchronously any written ID3-Frames from the specified file. + * + * @public + */ export function removeTags(filepath: string, callback: RemoveCallback): void + export function removeTags(filepath: string, callback?: RemoveCallback) { if(isFunction(callback)) { return removeTagsAsync(filepath, callback) diff --git a/src/api/update.ts b/src/api/update.ts index 42c894e..0c67a77 100644 --- a/src/api/update.ts +++ b/src/api/update.ts @@ -6,29 +6,50 @@ import { updateTags } from '../updateTags' import { write, WriteCallback } from "./write" /** - * Update ID3-Tags from passed buffer/filepath + * Updates ID3-Tags from the given buffer. + * + * @public */ export function update( tags: WriteTags, buffer: Buffer, options?: Options ): Buffer -export function update( + +/** + * Updates ID3-Tags synchronously in the specified file. + * + * @public + */ + export function update( tags: WriteTags, filepath: string, options?: Options ): true | Error -export function update( + +/** + * Updates ID3-Tags asynchronously in the specified file. + * + * @public + */ + export function update( tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback ): void -export function update( + +/** + * Updates ID3-Tags asynchronously from the given buffer or specified file. + * + * @public + */ + export function update( tags: WriteTags, filebuffer: string | Buffer, options: Options, callback: WriteCallback ): void + export function update( tags: WriteTags, filebuffer: string | Buffer, diff --git a/src/api/write.ts b/src/api/write.ts index 37074e7..50a3c93 100644 --- a/src/api/write.ts +++ b/src/api/write.ts @@ -4,19 +4,55 @@ import { create } from "./create" import { removeTagsFromBuffer } from "./remove" import { isFunction, isString } from "../util" -export type WriteCallback = { - (error: null, data: Buffer): void - (error: NodeJS.ErrnoException | Error, data: null): void -} +/** + * Callback signature for successful asynchronous update and write operations. + * + * @public + */ +export type WriteSuccessCallback = + (error: null, data: Buffer) => void + +/** + * Callback signature for failing asynchronous update and write operations. + * + * @public + */ +export type WriteErrorCallback = + (error: NodeJS.ErrnoException | Error, data: null) => void + +/** + * Callback signatures for asynchronous update and write operations. + * + * @public + */ +export type WriteCallback = + WriteSuccessCallback & WriteErrorCallback /** - * Write passed tags to a file/buffer + * Replaces any existing tags with the given tags in the given buffer. + * + * @public */ export function write(tags: WriteTags, buffer: Buffer): Buffer + +/** + * Replaces synchronously any existing tags with the given tags in the + * specified file. + * + * @public + */ export function write(tags: WriteTags, filepath: string): true | Error + +/** + * Replaces asynchronously any existing tags with the given tags in the + * given buffer or specified file. + * + * @public + */ export function write( tags: WriteTags, filebuffer: string | Buffer, callback: WriteCallback ): void + export function write( tags: WriteTags, filebuffer: string | Buffer, diff --git a/src/definitions/FrameIdentifiers.ts b/src/definitions/FrameIdentifiers.ts index ac8597f..cac9cc7 100644 --- a/src/definitions/FrameIdentifiers.ts +++ b/src/definitions/FrameIdentifiers.ts @@ -1,3 +1,8 @@ +import { TagAliases } from "../types/Tags" + +type FrameIdentifiersChecker = + Partial> + const FrameIdentifiersV2 = { album: "TAL", bpm: "TBP", @@ -42,7 +47,7 @@ const FrameIdentifiersV2 = { audioSourceUrl: "WAS", publisherUrl: "WPB", userDefinedUrl: "WXX" -} as const +} as const satisfies FrameIdentifiersChecker const FrameIdentifiersV3 = { album: "TALB", @@ -104,7 +109,7 @@ const FrameIdentifiersV3 = { eventTimingCodes: "ETCO", commercialFrame: "COMR", uniqueFileIdentifier: "UFID" -} as const +} as const satisfies FrameIdentifiersChecker /** * v4 removes some text frames compared to v3: TDAT, TIME, TRDA, TSIZ, TYER @@ -177,7 +182,7 @@ const FrameIdentifiersV4 = { paymentUrl: "WPAY", publisherUrl: "WPUB", userDefinedUrl: "WXXX" -} as const +} as const satisfies FrameIdentifiersChecker /** * Alias to identifier diff --git a/src/definitions/FrameOptions.ts b/src/definitions/FrameOptions.ts index c3c52b3..c1776d2 100644 --- a/src/definitions/FrameOptions.ts +++ b/src/definitions/FrameOptions.ts @@ -26,6 +26,7 @@ export const FRAME_OPTIONS = { multiple: false /* change in 1.0 */ }, "USLT": { + // TODO this should be true! multiple: false /* change in 1.0 */ }, "SYLT": { diff --git a/src/definitions/TagConstants.ts b/src/definitions/TagConstants.ts index 78c4304..4ceb473 100644 --- a/src/definitions/TagConstants.ts +++ b/src/definitions/TagConstants.ts @@ -1,11 +1,16 @@ +/** + * @public + */ export type TagConstants = typeof TagConstants /** - * Documented constants used in tag frames. + * Constants documented in the id3 specifications used in tag frames. * * @see {@link https://id3.org/} for more information. + * + * @public */ export const TagConstants = { /** @@ -14,6 +19,8 @@ export const TagConstants = { * - Synchronised tempo codes (`SYTC` tag frame) * - Synchronised lyrics/text (`SYLT` tag frame) * - Position synchronisation frame (`POSS` tag frame)) + * + * @label TimeStampFormat */ TimeStampFormat: { MPEG_FRAMES: 1, diff --git a/src/frames/frame-sylt.ts b/src/frames/frame-sylt.ts index 7d83247..a36ef4c 100644 --- a/src/frames/frame-sylt.ts +++ b/src/frames/frame-sylt.ts @@ -1,3 +1,4 @@ +import { TextEncoding } from "../definitions/Encoding" import { FrameBuilder } from "../FrameBuilder" import { FrameReader } from "../FrameReader" import type { Data } from "./type" @@ -8,7 +9,7 @@ export const SYLT = { data = [data] } - const encoding = 1 // 16 bit unicode + const encoding = TextEncoding.UTF_16_WITH_BOM return Buffer.concat(data.map((lycics: Data) => { const frameBuilder = new FrameBuilder("SYLT") .appendNumber(encoding, 1) diff --git a/src/frames/frame-uslt.ts b/src/frames/frame-uslt.ts index 9e8b46d..cf33fe6 100644 --- a/src/frames/frame-uslt.ts +++ b/src/frames/frame-uslt.ts @@ -1,3 +1,4 @@ +import { TextEncoding } from "../definitions/Encoding" import { FrameBuilder } from "../FrameBuilder" import { FrameReader } from "../FrameReader" import { isString } from '../util' @@ -8,6 +9,7 @@ export const USLT = { data = data || {} if(isString(data)) { data = { + // TODO This is buggy specs expects a language of 3 characters text: data } } @@ -15,11 +17,12 @@ export const USLT = { return null } + const encoding = TextEncoding.UTF_16_WITH_BOM return new FrameBuilder("USLT") - .appendNumber(0x01, 1) + .appendNumber(0x01, encoding) .appendValue(data.language) - .appendNullTerminatedValue(data.shortText, 0x01) - .appendValue(data.text, null, 0x01) + .appendNullTerminatedValue(data.shortText, encoding) + .appendValue(data.text, null, encoding) .getBuffer() }, read: (buffer: Buffer) => { diff --git a/src/types/Options.ts b/src/types/Options.ts index 3db3112..61aa029 100644 --- a/src/types/Options.ts +++ b/src/types/Options.ts @@ -1,3 +1,6 @@ +/** + * @public + */ export interface Options { /** * Only read the specified tag identifiers, defaults to all. diff --git a/src/types/TagFrames.ts b/src/types/TagFrames.ts new file mode 100644 index 0000000..33eaa04 --- /dev/null +++ b/src/types/TagFrames.ts @@ -0,0 +1,821 @@ +/** + * Tag frames type definitions and documentations. + * + * @public + */ + + +import { TagConstants } from "../definitions/TagConstants" +import { Values } from "../types/utility" + +/** + * Tag frames type definitions and documentations. + * + * @public + */ + + +/** + * The 'Album/Movie/Show title' frame is intended for the title of the recording(/source of sound) which the audio in the file is taken from. + * + * @public + */ +export type Album = string + +/** + * The 'BPM' frame contains the number of beats per minute in the mainpart of the audio. The BPM is an integer and represented as a numerical string. + * + * @public + */ +export type Bpm = string + +/** + * The 'Composer(s)' frame is intended for the name of the composer(s). They are seperated with the "/" character. + * + * @public + */ +export type Composer = string + +/** + * The 'Content type', which previously was stored as a one byte numeric value only, is now a numeric string. You may use one or several of the types as ID3v1.1 did or, since the category list would be impossible to maintain with accurate and up to date categories, define your own. + * + * References to the ID3v1 genres can be made by, as first byte, enter "(" followed by a number from the genres list (appendix A) and ended with a ")" character. This is optionally followed by a refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be made in the same frame, e.g. "(51)(39)". If the refinement should begin with a "(" character it should be replaced with "((", e.g. "((I can figure out any genre)" or "(55)((I think...)" + * + * @public + */ +export type Genre = string + +/** + * The 'Copyright message' frame, which must begin with a year and a space character (making five characters), is intended for the copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the copyright information is unavailable or has been removed, and must not be interpreted to mean that the sound is public domain. Every time this field is displayed the field must be preceded with "Copyright © ". + * + * @public + */ +export type Copyright = string + +/** + * The 'Encoding time' frame contains a timestamp describing when the + audio was encoded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + * + * @public + */ +export type EncodingTime = string + +/** + * The 'Date' frame is a numeric string in the DDMM format containing the date for the recording. This field is always four characters long. + * + * @public + */ +export type RecordingDate = string + +/** + * The 'Playlist delay' defines the numbers of milliseconds of silence between every song in a playlist. The player should use the "ETC" frame, if present, to skip initial silence and silence at the end of the audio to match the 'Playlist delay' time. The time is represented as a numeric string. + * + * @public + */ +export type PlaylistDelay = string + +/** + * The 'Original release time' frame contains a timestamp describing when the original recording of the audio was released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + * + * @public + */ +export type OriginalReleaseTime = string + +/** + * The 'Recording time' frame contains a timestamp describing when the audio was recorded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + * + * @public + */ +export type RecordingTime = string + +/** + * The 'Release time' frame contains a timestamp describing when the audio was first released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + * + * @public + */ +export type ReleaseTime = string + +/** + * The 'Tagging time' frame contains a timestamp describing then the audio was tagged. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. + * + * @public + */ +export type TaggingTime = string + +/** + * The 'Encoded by' frame contains the name of the person or organisation that encoded the audio file. This field may contain a copyright message, if the audio file also is copyrighted by the encoder. + * + * @public + */ +export type EncodedBy = string + +/** + * The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) of the text or lyrics in the recording. They are seperated with the "/" character. + * + * @public + */ +export type TextWriter = string + +/** + * The 'File type' frame indicates which type of audio this tag defines. The following type and refinements are defined: + * + * MPG MPEG Audio + * /1 MPEG 1/2 layer I + * /2 MPEG 1/2 layer II + * /3 MPEG 1/2 layer III + * /2.5 MPEG 2.5 + * /AAC Advanced audio compression + * VQF Transform-domain Weighted Interleave Vector Quantization + * PCM Pulse Code Modulated audio + * + * but other types may be used, not for these types though. This is used in a similar way to the predefined types in the "Media type" frame, but without parentheses. If this frame is not present audio type is assumed to be "MPG". + * + * @public + */ +export type FileType = string + +/** + * The 'Involved people list' is very similar to the musician credits list, but maps between functions, like producer, and names. + * + * @public + */ +export type InvolvedPeopleList = string + +/** + * The 'Time' frame is a numeric string in the HHMM format containing the time for the recording. This field is always four characters long. + * + * @public + */ +export type Time = string + +/** + * The 'Content group description' frame is used if the sound belongs to a larger category of sounds/music. For example, classical music is often sorted in different musical sections (e.g. "Piano Concerto", "Weather - Hurricane"). + * + * @public + */ +export type ContentGroup = string + +/** + * The 'Title/Songname/Content description' frame is the actual name of the piece (e.g. "Adagio", "Hurricane Donna"). + * + * @public + */ +export type Title = string + +/** + * The 'Subtitle/Description refinement' frame is used for information directly related to the contents title (e.g. "Op. 16" or "Performed live at Wembley"). + * + * @public + */ +export type Subtitle = string + +/** + * The 'Initial key' frame contains the musical key in which the sound starts. It is represented as a string with a maximum length of three characters. The ground keys are represented with "A","B","C","D","E", "F" and "G" and halfkeys represented with "b" and "#". Minor is represented as "m". Example "Cbm". Off key is represented with an "o" only. + * + * @public + */ +export type InitialKey = string + +/** + * The 'Language(s)' frame should contain the languages of the text or lyrics spoken or sung in the audio. The language is represented with three characters according to ISO-639-2. If more than one language is used in the text their language codes should follow according to their usage. + * + * @see {@link https://id3.org/ISO%20639-2 | ISO 639-2} + * + * @public + */ +export type Language = string + +/** + * The 'Length' frame contains the length of the audiofile in milliseconds, represented as a numeric string. + * + * @public + */ +export type Length = string + +/** + * The 'Musician credits list' is intended as a mapping between instruments and the musician that played it. Every odd field is an instrument and every even is an artist or a comma delimited list of artists. + * + * @public + */ +export type MusicianCreditsList = string + +/** + * The 'Media type' frame describes from which media the sound originated. + * + * @remarks This may be a text string or a reference to the predefined media types found in the list below. References are made within "(" and ")" and are optionally followed by a text refinement, e.g. "(MC) with four channels". If a text refinement should begin with a "(" character it should be replaced with "((". Predefined refinements is appended after the media type, e.g. "(CD/A)" or "(VID/PAL/VHS)". + * + * ``` + * DIG Other digital media + * /A Analog transfer from media + * + * ANA Other analog media + * /WAC Wax cylinder + * /8CA 8-track tape cassette + * + * CD CD + * /A Analog transfer from media + * /DD DDD + * /AD ADD + * /AA AAD + * + * LD Laserdisc + * /A Analog transfer from media + * + * TT Turntable records + * /33 33.33 rpm + * /45 45 rpm + * /71 71.29 rpm + * /76 76.59 rpm + * /78 78.26 rpm + * /80 80 rpm + * + * MD MiniDisc + * /A Analog transfer from media + * + * DAT DAT + * /A Analog transfer from media + * /1 standard, 48 kHz/16 bits, linear + * /2 mode 2, 32 kHz/16 bits, linear + * /3 mode 3, 32 kHz/12 bits, nonlinear, low speed + * /4 mode 4, 32 kHz/12 bits, 4 channels + * /5 mode 5, 44.1 kHz/16 bits, linear + * /6 mode 6, 44.1 kHz/16 bits, 'wide track' play + * + * DCC DCC + * /A Analog transfer from media + * + * DVD DVD + * /A Analog transfer from media + * + * TV Television + * /PAL PAL + * /NTSC NTSC + * /SECAM SECAM + * + * VID Video + * /PAL PAL + * /NTSC NTSC + * /SECAM SECAM + * /VHS VHS + * /SVHS S-VHS + * /BETA BETAMAX + * + * RAD Radio + * /FM FM + * /AM AM + * /LW LW + * /MW MW + * + * TEL Telephone + * /I ISDN + * + * MC MC (normal cassette) + * /4 4.75 cm/s (normal speed for a two sided cassette) + * /9 9.5 cm/s + * /I Type I cassette (ferric/normal) + * /II Type II cassette (chrome) + * /III Type III cassette (ferric chrome) + * /IV Type IV cassette (metal) + * + * REE Reel + * /9 9.5 cm/s + * /19 19 cm/s + * /38 38 cm/s + * /76 76 cm/s + * /I Type I cassette (ferric/normal) + * /II Type II cassette (chrome) + * /III Type III cassette (ferric chrome) + * /IV Type IV cassette (metal) + * ``` + * + * @public + */ +export type MediaType = string + +/** + * The 'Mood' frame is intended to reflect the mood of the audio with a few keywords, e.g. "Romantic" or "Sad". + * + * @public + */ +export type Mood = string + +/** + * The 'Original album/movie/show title' frame is intended for the title of the original recording (or source of sound), if for example the music in the file should be a cover of a previously released song. + * + * @public + */ +export type OriginalTitle = string + +/** + * The 'Original filename' frame contains the preferred filename for the file, since some media doesn't allow the desired length of the filename. The filename is case sensitive and includes its suffix. + * + * @public + */ +export type OriginalFilename = string + +/** + * The 'Original lyricist(s)/text writer(s)' frame is intended for the text writer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The text writers are seperated with the "/" character. + * + * @public + */ +export type OriginalTextwriter = string + +/** + * The 'Original artist(s)/performer(s)' frame is intended for the performer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The performers are seperated with the "/" character. + * + * @public + */ +export type OriginalArtist = string + +/** + * The 'Original release year' frame is intended for the year when the original recording, if for example the music in the file should be a cover of a previously released song, was released. The field is formatted as in the "Year" frame. + * + * @public + */ +export type OriginalYear = string + +/** + * The 'File owner/licensee' frame contains the name of the owner or licensee of the file and it's contents. + * + * @public + */ +export type FileOwner = string + +/** + * The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. + * + * @public + */ +export type Artist = string + +/** + * The 'Band/Orchestra/Accompaniment' frame is used for additional information about the performers in the recording. + * + * @public + */ +export type PerformerInfo = string + +/** + * The 'Conductor' frame is used for the name of the conductor. + * + * @public + */ +export type Conductor = string + +/** + * The 'Interpreted, remixed, or otherwise modified by' frame contains more information about the people behind a remix and similar interpretations of another existing piece. + * + * @public + */ +export type RemixArtist = string + +/** + * The 'Part of a set' frame is a numeric string that describes which part of a set the audio came from. This frame is used if the source described in the "Album/Movie/Show title" frame is divided into several mediums, e.g. a double CD. The value may be extended with a "/" character and a numeric string containing the total number of parts in the set. E.g. "1/2". + * + * @public + */ +export type PartOfSet = string + +/** + * The 'Produced notice' frame, in which the string must begin with a year and a space character (making five characters), is intended for the production copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the production copyright information is unavailable or has been removed, and must not be interpreted to mean that the audio is public domain. Every time this field is displayed the field must be preceded with "Produced " (P) " ", where (P) is one character showing a P in a circle. + * + * @public +*/ +export type ProducedNotice = string + +/** + * The 'Publisher' frame simply contains the name of the label or publisher. + * + * @public + */ +export type Publisher = string + +/** + * The 'Track number/Position in set' frame is a numeric string containing the order number of the audio-file on its original recording. This may be extended with a "/" character and a numeric string containing the total numer of tracks/elements on the original recording. E.g. "4/9". + * + * @public + */ +export type TrackNumber = string + +/** + * The 'Recording dates' frame is a intended to be used as complement to the "Year", "Date" and "Time" frames. E.g. "4th-7th June, 12th June" in combination with the "Year" frame. + * + * @public + */ +export type RecordingDates = string + +/** + * The 'Internet radio station name' frame contains the name of the internet radio station from which the audio is streamed. + * + * @public + */ +export type InternetRadioName = string + +/** + * The 'Internet radio station owner' frame contains the name of the owner of the internet radio station from which the audio is streamed. + * + * @public + */ +export type InternetRadioOwner = string + +/** + * The 'Album sort order' frame defines a string which should be used instead of the album name (TALB) for sorting purposes. E.g. an album named "A Soundtrack" might preferably be sorted as "Soundtrack". + * + * @public + */ +export type AlbumSortOrder = string + +/** + * The 'Performer sort order' frame defines a string which should be used instead of the performer (TPE2) for sorting purposes. + * + * @public + */ +export type PerformerSortOrder = string + +/** + * The 'Title sort order' frame defines a string which should be used instead of the title (TIT2) for sorting purposes. + * + * @public + */ +export type TitleSortOrder = string + +/** + * The 'Size' frame contains the size of the audiofile in bytes, excluding the ID3v2 tag, represented as a numeric string. + * + * @public + */ +export type Size = string + +/** + * The 'ISRC' frame should contain the International Standard Recording Code (ISRC) (12 characters). + * + * @public + */ +export type ISRC = string + +/** + * The 'Software/Hardware and settings used for encoding' frame includes the used audio encoder and its settings when the file was encoded. Hardware refers to hardware encoders, not the computer on which a program was run. + * + * @public + */ +export type EncodingTechnology = string + +/** + * The 'Set subtitle' frame is intended for the subtitle of the part of a set this track belongs to. + * + * @public + */ +export type SetSubtitle = string + +/** + * The 'Year' frame is a numeric string with a year of the recording. This frames is always four characters long (until the year 10000). + * + * @public + */ +export type Year = string + +/** + * @public + */ +export type Comment = { + /** + * 3 letter ISO 639-2 language code, for example: eng + * @see {@link https://id3.org/ISO%20639-2 | ISO 639-2} + */ + language: string, + shortText?: string, + text: string, +} + +/** + * Unsychronised lyrics/text transcription + * + * @remarks + * This frame contains the lyrics of the song or a text transcription of + other vocal activities. The head includes an encoding descriptor and + a content descriptor. The body consists of the actual text. The + 'Content descriptor' is a terminated string. If no descriptor is + entered, 'Content descriptor' is $00 (00) only. Newline characters + are allowed in the text. There may be more than one 'Unsynchronised + lyrics/text transcription' frame in each tag, but only one with the + same language and content descriptor. + * + * @public + */ +export interface UnsynchronisedLyrics { + /** + * 3 letter ISO 639-2 language code, for example: eng + * @see {@link https://id3.org/ISO%20639-2 | ISO 639-2} + */ + language: string, + /** + * Content descriptor + */ + shortText?: string, + /** + * Lyrics/text + */ + text: string +} + +/** + * The synchronised lyrics `SYLT` tag frame. + * + * @see {@link https://id3.org/d3v2.3.0 | 4.10. Synchronised lyrics/text} + * + * @public + */ +export interface SynchronisedLyrics { + /** + * 3 letter ISO 639-2 language code, for example: eng + * @see {@link https://id3.org/ISO%20639-2 | ISO 639-2} + * @public + */ + language: string, + /** + * Absolute time unit: + * {@link TagConstants.(:TimeStampFormat)} + */ + timeStampFormat: Values, + /** + * The type of context in the text (i.e. lyrics, chord, etc.). + * + * {@link TagConstants.SynchronisedLyrics.ContentType} + */ + contentType: number, + /** + * Content descriptor + */ + shortText?: string, + synchronisedText: { + text: string, + /** + * A positive integer expressing an absolute time in unit according + * to `timeStampFormat`. + */ + timeStamp: number + }[] +} + +/** + * @public + */ +export type UserDefinedText = { + description: string, + value: string +} + +/** + * `APIC` (attached picture) tag frames + * + * Filename or image data. + * + * @public + */ + export type Image = string | Buffer | { + mime: string + /** + * See https://en.wikipedia.org/wiki/ID3#ID3v2_embedded_image_extension + */ + type: { + /** + * {@link TagConstants.AttachedPicture.PictureType} + */ + id: number, + /** + * @deprecated Provided as an information when a tag is read, + * unused when a tag is written. + */ + name?: string + }, + description?: string, + imageBuffer: Buffer, +} + +/** + * @public + */ +export type Popularimeter = { + email: string, + /** + * 1-255 + */ + rating: number, + counter: number, +} + +/** + * @public + */ +export type Private = { + ownerIdentifier: string, + data: Buffer +} + +/** + * This frame's purpose is to be able to identify the audio file in a + * database that may contain more information relevant to the content. + * Since standardisation of such a database is beyond this document, + * all frames begin with a null-terminated string with a URL + * containing an email address, or a link to a location where an email + * address can be found, that belongs to the organisation responsible + * for this specific database implementation. Questions regarding the + * database should be sent to the indicated email address. The URL + * should not be used for the actual database queries. The string + * "http://www.id3.org/dummy/ufid.html" should be used for tests. + * Software that isn't told otherwise may safely remove such frames. + * + * There may be more than one "UFID" frame in a tag, but only one with + * the same `ownerIdentifier`. + * + * @public + */ +export type UniqueFileIdentifier = { + /** + * Must be non-empty. + */ + ownerIdentifier: string, + /** + * Up to 64 bytes of binary data. + * Providing more data will result in an undefined behaviour. + */ + identifier: Buffer +} + +/** + * The purpose of this frame is to describe a single chapter within an audio file. There may be more than one frame of this type in a tag but each must have an Element ID that is unique with respect to any other "CHAP" frame or "CTOC" frame in the tag. + * + * @see {@link https://id3.org/id3v2-chapters-1.0#Chapter_frame | Chapter frame} + * + * @public + */ +export type Chapter = { + /** + * Must be unique + */ + elementID: string, + endTimeMs: number, + startTimeMs: number, + startOffsetBytes?: number, + endOffsetBytes?: number, + tags?: Tags +} + +/** + * @see {@link https://id3.org/id3v2-chapters-1.0#Table_of_contents_frame | Table of contents frame} + * + * @public + */ + export type TableOfContents = { + /** + * Must be unique + */ + elementID: string, + isOrdered?: boolean, + elements?: string[] + tags?: Tags +} + +/** + * The 'Commercial information' frame is a URL pointing at a webpage with information such as where the album can be bought. There may be more than one "WCOM" frame in a tag, but not with the same content. + * + * @public + */ + export type CommercialUrl = string[] + +/** + * The 'Copyright/Legal information' frame is a URL pointing at a webpage where the terms of use and ownership of the file is described. + * + * @public + */ +export type CopyrightUrl = string + +/** + * The 'Official audio file webpage' frame is a URL pointing at a file specific webpage. + * + * @public + */ +export type FileUrl = string + +/** + * The 'Official artist/performer webpage' frame is a URL pointing at the artists official webpage. There may be more than one "WOAR" frame in a tag if the audio contains more than one performer, but not with the same content. + * + * @public + */ + export type ArtistUrl = string[] + +/** + * The 'Official audio source webpage' frame is a URL pointing at the official webpage for the source of the audio file, e.g. a movie. + * + * @public + */ +export type AudioSourceUrl = string + +/** + * The 'Official internet radio station homepage' contains a URL pointing at the homepage of the internet radio station. + * + * @public + */ +export type RadioStationUrl = string + +/** + * The 'Payment' frame is a URL pointing at a webpage that will handle the process of paying for this file. + * + * @public + */ +export type PaymentUrl = string + +/** + * The 'Publishers official webpage' frame is a URL pointing at the official wepage for the publisher. + * + * @public + */ +export type PublisherUrl = string + +/** + * The 'User-defined URL link' frame is intended for URL links concerning the audiofile in a similar way to the other "W"-frames. There may be more than one "WXXX" frame in each tag, but only one with the same description. + * + * @public + */ + export type UserDefinedUrl = { + description: string, + url: string +} + +/** + * ETCO frame + * + * @see {@link https://id3.org/id3v2.3.0#Event_timing_codes | 4.6. Event timing codes} + * + * @public + */ + export type EventTimingCodes = { + /** + * Absolute time unit: + * {@link TagConstants.TimeStampFormat} + */ + timeStampFormat: Values, + keyEvents: { + /** + * {@link TagConstants.EventTimingCodes.EventType} + */ + type: number, + /** + * A positive integer expressing an absolute time in unit according + * to `timeStampFormat`. + */ + timeStamp: number + }[] +} + +/** + * Commercial COMR frame + * + * @public + */ +export type CommercialFrame = { + /** + * Object containing price information. + * Key is a three letter currency code according to ISO-4217 (e.g. EUR). + * Value is a price string or number, e.g. 17.52 + */ + prices: { + [currencyCode: string]: string | number + }, + /** + * Describes how long the price is valid + */ + validUntil: { + year: number, + month: number, + day: number + }, + contactUrl?: string, + /** + * Describes how the audio is delivered when bought + * {@link TagConstants.CommercialFrame.ReceivedAs} + */ + receivedAs: number, + /** + * Name of the seller + */ + nameOfSeller?: string, + /** + * Short description of the product + */ + description?: string, + /** + * Optional logo of the seller. + */ + sellerLogo?: { + /** + * Mime type of picture. + * Only allowed values: image/jpeg, image/png, image/ + */ + mimeType?: string, + /** + * Filepath to a picture or Buffer containing the picture + */ + picture: string | Buffer + } +} diff --git a/src/types/Tags.ts b/src/types/Tags.ts index 722bbe6..5df0f86 100644 --- a/src/types/Tags.ts +++ b/src/types/Tags.ts @@ -1,566 +1,110 @@ -import { TagConstants } from "../definitions/TagConstants" -import { Values } from "../types/utility" +/** + * Tag frames type definitions and documentations. + * + * @public + */ +import * as TagFrames from "./TagFrames" -export interface TagAliases { - /** - * The 'Album/Movie/Show title' frame is intended for the title of the recording(/source of sound) which the audio in the file is taken from. - */ - album?: string, - /** - * The 'BPM' frame contains the number of beats per minute in the mainpart of the audio. The BPM is an integer and represented as a numerical string. - */ - bpm?: string, - /** - * The 'Composer(s)' frame is intended for the name of the composer(s). They are seperated with the "/" character. - */ - composer?: string, - /** - * The 'Content type', which previously was stored as a one byte numeric value only, is now a numeric string. You may use one or several of the types as ID3v1.1 did or, since the category list would be impossible to maintain with accurate and up to date categories, define your own. - * - * References to the ID3v1 genres can be made by, as first byte, enter "(" followed by a number from the genres list (appendix A) and ended with a ")" character. This is optionally followed by a refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be made in the same frame, e.g. "(51)(39)". If the refinement should begin with a "(" character it should be replaced with "((", e.g. "((I can figure out any genre)" or "(55)((I think...)" - */ - genre?: string, - /** - * The 'Copyright message' frame, which must begin with a year and a space character (making five characters), is intended for the copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the copyright information is unavailable or has been removed, and must not be interpreted to mean that the sound is public domain. Every time this field is displayed the field must be preceded with "Copyright © ". - */ - copyright?: string, - /** - * The 'Encoding time' frame contains a timestamp describing when the - audio was encoded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. - */ - encodingTime?: string, - /** - * The 'Date' frame is a numeric string in the DDMM format containing the date for the recording. This field is always four characters long. - */ - date?: string, - /** - * The 'Playlist delay' defines the numbers of milliseconds of silence between every song in a playlist. The player should use the "ETC" frame, if present, to skip initial silence and silence at the end of the audio to match the 'Playlist delay' time. The time is represented as a numeric string. - */ - playlistDelay?: string, - /** - * The 'Original release time' frame contains a timestamp describing when the original recording of the audio was released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. - */ - originalReleaseTime?: string, - /** - * The 'Recording time' frame contains a timestamp describing when the audio was recorded. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. - */ - recordingTime?: string, - /** - * The 'Release time' frame contains a timestamp describing when the audio was first released. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. - */ - releaseTime?: string, - /** - * The 'Tagging time' frame contains a timestamp describing then the audio was tagged. Valid timestamps are yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and yyyy-MM-ddTHH:mm:ss. - */ - taggingTime?: string, - /** - * The 'Encoded by' frame contains the name of the person or organisation that encoded the audio file. This field may contain a copyright message, if the audio file also is copyrighted by the encoder. - */ - encodedBy?: string, - /** - * The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) of the text or lyrics in the recording. They are seperated with the "/" character. - */ - textWriter?: string, - /** - * The 'File type' frame indicates which type of audio this tag defines. The following type and refinements are defined: - * - * MPG MPEG Audio - * /1 MPEG 1/2 layer I - * /2 MPEG 1/2 layer II - * /3 MPEG 1/2 layer III - * /2.5 MPEG 2.5 - * /AAC Advanced audio compression - * VQF Transform-domain Weighted Interleave Vector Quantization - * PCM Pulse Code Modulated audio - * - * but other types may be used, not for these types though. This is used in a similar way to the predefined types in the "Media type" frame, but without parentheses. If this frame is not present audio type is assumed to be "MPG". - */ - fileType?: string, - /** - * The 'Involved people list' is very similar to the musician credits list, but maps between functions, like producer, and names. - */ - involvedPeopleList?: string, - /** - * The 'Time' frame is a numeric string in the HHMM format containing the time for the recording. This field is always four characters long. - */ - time?: string, - /** - * The 'Content group description' frame is used if the sound belongs to a larger category of sounds/music. For example, classical music is often sorted in different musical sections (e.g. "Piano Concerto", "Weather - Hurricane"). - */ - contentGroup?: string, - /** - * The 'Title/Songname/Content description' frame is the actual name of the piece (e.g. "Adagio", "Hurricane Donna"). - */ - title?: string, - /** - * The 'Subtitle/Description refinement' frame is used for information directly related to the contents title (e.g. "Op. 16" or "Performed live at Wembley"). - */ - subtitle?: string, - /** - * The 'Initial key' frame contains the musical key in which the sound starts. It is represented as a string with a maximum length of three characters. The ground keys are represented with "A","B","C","D","E", "F" and "G" and halfkeys represented with "b" and "#". Minor is represented as "m". Example "Cbm". Off key is represented with an "o" only. - */ - initialKey?: string, - /** - * The 'Language(s)' frame should contain the languages of the text or lyrics spoken or sung in the audio. The language is represented with three characters according to ISO-639-2. If more than one language is used in the text their language codes should follow according to their usage. - * @see {@link https://id3.org/ISO%20639-2 ISO 639-2} - */ - language?: string, - /** - * The 'Length' frame contains the length of the audiofile in milliseconds, represented as a numeric string. - */ - length?: string, - /** - * The 'Musician credits list' is intended as a mapping between instruments and the musician that played it. Every odd field is an instrument and every even is an artist or a comma delimited list of artists. - */ - musicianCreditsList?: string, - /** - * The 'Media type' frame describes from which media the sound originated. This may be a text string or a reference to the predefined media types found in the list below. References are made within "(" and ")" and are optionally followed by a text refinement, e.g. "(MC) with four channels". If a text refinement should begin with a "(" character it should be replaced with "((". Predefined refinements is appended after the media type, e.g. "(CD/A)" or "(VID/PAL/VHS)". - * - *DIG Other digital media - * /A Analog transfer from media - * - *ANA Other analog media - * /WAC Wax cylinder - * /8CA 8-track tape cassette - * - *CD CD - * /A Analog transfer from media - * /DD DDD - * /AD ADD - * /AA AAD - * - *LD Laserdisc - * /A Analog transfer from media - * - *TT Turntable records - * /33 33.33 rpm - * /45 45 rpm - * /71 71.29 rpm - * /76 76.59 rpm - * /78 78.26 rpm - * /80 80 rpm - * - *MD MiniDisc - * /A Analog transfer from media - * - *DAT DAT - * /A Analog transfer from media - * /1 standard, 48 kHz/16 bits, linear - * /2 mode 2, 32 kHz/16 bits, linear - * /3 mode 3, 32 kHz/12 bits, nonlinear, low speed - * /4 mode 4, 32 kHz/12 bits, 4 channels - * /5 mode 5, 44.1 kHz/16 bits, linear - * /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - * - *DCC DCC - * /A Analog transfer from media - * - *DVD DVD - * /A Analog transfer from media - * - *TV Television - * /PAL PAL - * /NTSC NTSC - * /SECAM SECAM - * - *VID Video - * /PAL PAL - * /NTSC NTSC - * /SECAM SECAM - * /VHS VHS - * /SVHS S-VHS - * /BETA BETAMAX - * - *RAD Radio - * /FM FM - * /AM AM - * /LW LW - * /MW MW - * - *TEL Telephone - * /I ISDN - * - *MC MC (normal cassette) - * /4 4.75 cm/s (normal speed for a two sided cassette) - * /9 9.5 cm/s - * /I Type I cassette (ferric/normal) - * /II Type II cassette (chrome) - * /III Type III cassette (ferric chrome) - * /IV Type IV cassette (metal) - * - *REE Reel - * /9 9.5 cm/s - * /19 19 cm/s - * /38 38 cm/s - * /76 76 cm/s - * /I Type I cassette (ferric/normal) - * /II Type II cassette (chrome) - * /III Type III cassette (ferric chrome) - * /IV Type IV cassette (metal) - */ - mediaType?: string, - /** - * The 'Mood' frame is intended to reflect the mood of the audio with a few keywords, e.g. "Romantic" or "Sad". - */ - mood?: string, - /** - * The 'Original album/movie/show title' frame is intended for the title of the original recording (or source of sound), if for example the music in the file should be a cover of a previously released song. - */ - originalTitle?: string, - /** - * The 'Original filename' frame contains the preferred filename for the file, since some media doesn't allow the desired length of the filename. The filename is case sensitive and includes its suffix. - */ - originalFilename?: string, - /** - * The 'Original lyricist(s)/text writer(s)' frame is intended for the text writer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The text writers are seperated with the "/" character. - */ - originalTextwriter?: string, - /** - * The 'Original artist(s)/performer(s)' frame is intended for the performer(s) of the original recording, if for example the music in the file should be a cover of a previously released song. The performers are seperated with the "/" character. - */ - originalArtist?: string, - /** - * The 'Original release year' frame is intended for the year when the original recording, if for example the music in the file should be a cover of a previously released song, was released. The field is formatted as in the "Year" frame. - */ - originalYear?: string, - /** - * The 'File owner/licensee' frame contains the name of the owner or licensee of the file and it's contents. - */ - fileOwner?: string, - /** - * The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is used for the main artist(s). They are seperated with the "/" character. - */ - artist?: string, - /** - * The 'Band/Orchestra/Accompaniment' frame is used for additional information about the performers in the recording. - */ - performerInfo?: string, - /** - * The 'Conductor' frame is used for the name of the conductor. - */ - conductor?: string, - /** - * The 'Interpreted, remixed, or otherwise modified by' frame contains more information about the people behind a remix and similar interpretations of another existing piece. - */ - remixArtist?: string, - /** - * The 'Part of a set' frame is a numeric string that describes which part of a set the audio came from. This frame is used if the source described in the "Album/Movie/Show title" frame is divided into several mediums, e.g. a double CD. The value may be extended with a "/" character and a numeric string containing the total number of parts in the set. E.g. "1/2". - */ - partOfSet?: string, - /** - * The 'Produced notice' frame, in which the string must begin with a year and a space character (making five characters), is intended for the production copyright holder of the original sound, not the audio file itself. The absence of this frame means only that the production copyright information is unavailable or has been removed, and must not be interpreted to mean that the audio is public domain. Every time this field is displayed the field must be preceded with "Produced " (P) " ", where (P) is one character showing a P in a circle. +/** + * Tag frames type definitions and documentations. + * + * @public + */ +export { TagFrames } + +/** + * A utility to define an union of the given type or an array of the type. + * + * @remarks + * Used for frames that can have multiple instances. + * + * @public + */ +export type TypeOrTypeArray = T | T[] - */ - producedNotice?: string, - /** - * The 'Publisher' frame simply contains the name of the label or publisher. - */ - publisher?: string, - /** - * The 'Track number/Position in set' frame is a numeric string containing the order number of the audio-file on its original recording. This may be extended with a "/" character and a numeric string containing the total numer of tracks/elements on the original recording. E.g. "4/9". - */ - trackNumber?: string, - /** - * The 'Recording dates' frame is a intended to be used as complement to the "Year", "Date" and "Time" frames. E.g. "4th-7th June, 12th June" in combination with the "Year" frame. - */ - recordingDates?: string, - /** - * The 'Internet radio station name' frame contains the name of the internet radio station from which the audio is streamed. - */ - internetRadioName?: string, - /** - * The 'Internet radio station owner' frame contains the name of the owner of the internet radio station from which the audio is streamed. - */ - internetRadioOwner?: string, - /** - * The 'Album sort order' frame defines a string which should be used instead of the album name (TALB) for sorting purposes. E.g. an album named "A Soundtrack" might preferably be sorted as "Soundtrack". - */ - albumSortOrder?: string, - /** - * The 'Performer sort order' frame defines a string which should be used instead of the performer (TPE2) for sorting purposes. - */ - performerSortOrder?: string, - /** - * The 'Title sort order' frame defines a string which should be used instead of the title (TIT2) for sorting purposes. - */ - titleSortOrder?: string, - /** - * The 'Size' frame contains the size of the audiofile in bytes, excluding the ID3v2 tag, represented as a numeric string. - */ - size?: string, - /** - * The 'ISRC' frame should contain the International Standard Recording Code (ISRC) (12 characters). - */ - ISRC?: string, - /** - * The 'Software/Hardware and settings used for encoding' frame includes the used audio encoder and its settings when the file was encoded. Hardware refers to hardware encoders, not the computer on which a program was run. - */ - encodingTechnology?: string, - /** - * The 'Set subtitle' frame is intended for the subtitle of the part of a set this track belongs to. - */ - setSubtitle?: string, - /** - * The 'Year' frame is a numeric string with a year of the recording. This frames is always four characters long (until the year 10000). - */ - year?: string, - comment?: { - /** - * 3 letter ISO 639-2 language code, for example: eng - * @see {@link https://id3.org/ISO%20639-2 ISO 639-2} - */ - language: string, - shortText?: string, - text: string, - }, - unsynchronisedLyrics?: { - /** - * 3 letter ISO 639-2 language code, for example: eng - * @see {@link https://id3.org/ISO%20639-2 ISO 639-2} - */ - language: string, - shortText?: string, - text: string - }, - /** - * `SYLT` tag frames - * - * @see {@link https://id3.org/d3v2.3.0 4.10. Synchronised lyrics/text} - */ - synchronisedLyrics?: { - /** - * 3 letter ISO 639-2 language code, for example: eng - * @see {@link https://id3.org/ISO%20639-2 ISO 639-2} - */ - language: string, - /** - * Absolute time unit: - * {@link TagConstants.TimeStampFormat} - */ - timeStampFormat: Values, - /** - * {@link TagConstants.SynchronisedLyrics.ContentType} - */ - contentType: number, - /** - * Content descriptor - */ - shortText?: string, - synchronisedText: { - text: string, - /** - * A positive integer expressing an absolute time in unit according - * to `timeStampFormat`. - */ - timeStamp: number - }[] - }[], - userDefinedText?: { - description: string, - value: string - }|{ - description: string, - value: string - }[], - /** - * `APIC` (attached picture) tag frames - * - * Filename or image data. - */ - image?: string | Buffer | { - mime: string - /** - * See https://en.wikipedia.org/wiki/ID3#ID3v2_embedded_image_extension - */ - type: { - /** - * {@link TagConstants.AttachedPicture.PictureType } - */ - id: number, - /** - * @deprecated Provided as an information when a tag is read, - * unused when a tag is written. - */ - name?: string - }, - description?: string, - imageBuffer: Buffer, - }, - popularimeter?: { - email: string, - /** - * 1-255 - */ - rating: number, - counter: number, - }, - private?: { - ownerIdentifier: string, - data: Buffer - }[], - /** - * This frame's purpose is to be able to identify the audio file in a - * database that may contain more information relevant to the content. - * Since standardisation of such a database is beyond this document, - * all frames begin with a null-terminated string with a URL - * containing an email address, or a link to a location where an email - * address can be found, that belongs to the organisation responsible - * for this specific database implementation. Questions regarding the - * database should be sent to the indicated email address. The URL - * should not be used for the actual database queries. The string - * "http://www.id3.org/dummy/ufid.html" should be used for tests. - * Software that isn't told otherwise may safely remove such frames. - * - * There may be more than one "UFID" frame in a tag, but only one with - * the same `ownerIdentifier`. - */ - uniqueFileIdentifier?: { - /** - * Must be non-empty. - */ - ownerIdentifier: string, - /** - * Up to 64 bytes of binary data. - * Providing more data will result in an undefined behaviour. - */ - identifier: Buffer - }[], - /** - * @see {@link https://id3.org/id3v2-chapters-1.0#Chapter_frame Chapter frame} - */ - chapter?: { - /** - * Must be unique - */ - elementID: string, - endTimeMs: number, - startTimeMs: number, - startOffsetBytes?: number, - endOffsetBytes?: number, - tags?: Tags - }[], - /** - * @see {@link https://id3.org/id3v2-chapters-1.0#Table_of_contents_frame Table of contents frame} - */ - tableOfContents?: { - /** - * Must be unique - */ - elementID: string, - isOrdered?: boolean, - elements?: string[] - tags?: Tags - }[], - /** - * The 'Commercial information' frame is a URL pointing at a webpage with information such as where the album can be bought. There may be more than one "WCOM" frame in a tag, but not with the same content. - */ - commercialUrl?: string[], - /** - * The 'Copyright/Legal information' frame is a URL pointing at a webpage where the terms of use and ownership of the file is described. - */ - copyrightUrl?: string, - /** - * The 'Official audio file webpage' frame is a URL pointing at a file specific webpage. - */ - fileUrl?: string, - /** - * The 'Official artist/performer webpage' frame is a URL pointing at the artists official webpage. There may be more than one "WOAR" frame in a tag if the audio contains more than one performer, but not with the same content. - */ - artistUrl?: string[], - /** - * The 'Official audio source webpage' frame is a URL pointing at the official webpage for the source of the audio file, e.g. a movie. - */ - audioSourceUrl?: string, - /** - * The 'Official internet radio station homepage' contains a URL pointing at the homepage of the internet radio station. - */ - radioStationUrl?: string, - /** - * The 'Payment' frame is a URL pointing at a webpage that will handle the process of paying for this file. - */ - paymentUrl?: string, - /** - * The 'Publishers official webpage' frame is a URL pointing at the official wepage for the publisher. - */ - publisherUrl?: string, - /** - * The 'User-defined URL link' frame is intended for URL links concerning the audiofile in a similar way to the other "W"-frames. There may be more than one "WXXX" frame in each tag, but only one with the same description. - */ - userDefinedUrl?: { - description: string, - url: string - }[], - /** - * ETCO frame - * - * @see {@link https://id3.org/id3v2.3.0#Event_timing_codes 4.6. Event timing codes} - */ - eventTimingCodes?: { - /** - * Absolute time unit: - * {@link TagConstants.TimeStampFormat} - */ - timeStampFormat: Values, - keyEvents: { - /** - * {@link TagConstants.EventTimingCodes.EventType} - */ - type: number, - /** - * A positive integer expressing an absolute time in unit according - * to `timeStampFormat`. - */ - timeStamp: number - }[] - }, - commercialFrame?: { - /** - * Object containing price information. - * Key is a three letter currency code according to ISO-4217 (e.g. EUR). - * Value is a price string or number, e.g. 17.52 - */ - prices: { - [currencyCode: string]: string | number - }, - /** - * Describes how long the price is valid - */ - validUntil: { - year: number, - month: number, - day: number - }, - contactUrl?: string, - /** - * Describes how the audio is delivered when bought - * {@link TagConstants.CommercialFrame.ReceivedAs} - */ - receivedAs: number, - /** - * Name of the seller - */ - nameOfSeller?: string, - /** - * Short description of the product - */ - description?: string, - /** - * Optional logo of the seller. - */ - sellerLogo?: { - /** - * Mime type of picture. - * Only allowed values: image/jpeg, image/png, image/ - */ - mimeType?: string, - /** - * Filepath to a picture or Buffer containing the picture - */ - picture: string | Buffer - } - }[] +/** + * @public + */ +export interface TagAliases { + album?: TagFrames.Album, + bpm?: TagFrames.Bpm, + composer?: TagFrames.Composer, + genre?: TagFrames.Genre, + copyright?: TagFrames.Copyright, + encodingTime?: TagFrames.EncodingTime, + date?: TagFrames.RecordingDate, + playlistDelay?: TagFrames.PlaylistDelay, + originalReleaseTime?: TagFrames.OriginalReleaseTime, + recordingTime?: TagFrames.RecordingTime, + releaseTime?: TagFrames.ReleaseTime, + taggingTime?: TagFrames.TaggingTime, + encodedBy?: TagFrames.EncodedBy, + textWriter?: TagFrames.TextWriter, + fileType?: TagFrames.FileType, + involvedPeopleList?: TagFrames.InvolvedPeopleList, + time?: TagFrames.Time, + contentGroup?: TagFrames.ContentGroup, + title?: TagFrames.Title, + subtitle?: TagFrames.Subtitle, + initialKey?: TagFrames.InitialKey, + language?: TagFrames.Language, + length?: TagFrames.Length, + musicianCreditsList?: TagFrames.MusicianCreditsList, + mediaType?: TagFrames.MediaType, + mood?: TagFrames.Mood, + originalTitle?: TagFrames.OriginalTitle, + originalFilename?: TagFrames.OriginalFilename, + originalTextwriter?: TagFrames.OriginalTextwriter, + originalArtist?: TagFrames.OriginalArtist, + originalYear?: TagFrames.OriginalYear, + fileOwner?: TagFrames.FileOwner, + artist?: TagFrames.Artist, + performerInfo?: TagFrames.PerformerInfo, + conductor?: TagFrames.Conductor, + remixArtist?: TagFrames.RemixArtist, + partOfSet?: TagFrames.PartOfSet, + producedNotice?: TagFrames.ProducedNotice, + publisher?: TagFrames.Publisher, + trackNumber?: TagFrames.TrackNumber, + recordingDates?: TagFrames.RecordingDates, + internetRadioName?: TagFrames.InternetRadioName, + internetRadioOwner?: TagFrames.InternetRadioOwner, + albumSortOrder?: TagFrames.AlbumSortOrder, + performerSortOrder?: TagFrames.PerformerSortOrder, + titleSortOrder?: TagFrames.TitleSortOrder, + size?: TagFrames.Size, + ISRC?: TagFrames.ISRC, + encodingTechnology?: TagFrames.EncodingTechnology, + setSubtitle?: TagFrames.SetSubtitle, + year?: TagFrames.Year, + comment?: TagFrames.Comment, + unsynchronisedLyrics?: TypeOrTypeArray, + synchronisedLyrics?: TypeOrTypeArray, + userDefinedText?: TypeOrTypeArray, + image?: TagFrames.Image, + popularimeter?: TagFrames.Popularimeter, + private?: TypeOrTypeArray, + uniqueFileIdentifier?: TypeOrTypeArray, + // TODO change to TypeOrTypeArray + chapter?: TagFrames.Chapter[], + // TODO change to TypeOrTypeArray + tableOfContents?: TagFrames.TableOfContents[], + commercialUrl?: TagFrames.CommercialUrl, + copyrightUrl?: TagFrames.CopyrightUrl, + fileUrl?: TagFrames.FileUrl, + artistUrl?: TagFrames.ArtistUrl, + audioSourceUrl?: TagFrames.AudioSourceUrl, + radioStationUrl?: TagFrames.RadioStationUrl, + paymentUrl?: TagFrames.PaymentUrl, + publisherUrl?: TagFrames.PublisherUrl, + userDefinedUrl?: TypeOrTypeArray, + eventTimingCodes?: TagFrames.EventTimingCodes, + commercialFrame?: TypeOrTypeArray } +/** + * @public + */ export interface TagIdentifiers { TALB?: TagAliases["album"] TBPM?: TagAliases["bpm"] @@ -639,10 +183,15 @@ export interface TagIdentifiers { /** * On write either a tag alias or tag identifier can be be specified. * This is undefined behaviour when both are specified. + * + * @public */ export interface WriteTags extends TagAliases, TagIdentifiers { } +/** + * @public + */ export interface Tags extends TagAliases { raw?: TagIdentifiers } diff --git a/tsconfig.json b/tsconfig.json index 9492173..038bb66 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,30 @@ { // To target Node.js 10 see: // https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping + // https://www.typescriptlang.org/docs/handbook/tsconfig-json.html + // https://www.npmjs.com/package/@tsconfig/node10 + "display": "Node 10", "compilerOptions": { - "sourceMap": true, - "lib": ["es2018"], - "module": "commonjs", - "outDir": "dist", - "strict": true, - "allowJs": true, - "target": "es2018", - "declaration": true, - "skipLibCheck": true + "sourceMap": true, + "lib": [ + "es2018" + ], + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "outDir": "lib", + "strict": true, + "allowJs": true, + "target": "es2018", + "declaration": true, + "skipLibCheck": true }, - "include": ["./**/*"], - "exclude": ["node_modules", "dist", "coverage"] + "include": [ + "./**/*" + ], + "exclude": [ + "node_modules", + "lib", + "coverage" + ] }