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

build-number-generator

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

build-number-generator - npm Package Compare versions

Comparing version 1.0.0 to 2.0.0

bin/buildnumgen.js

102

dist/index.js

@@ -1,40 +0,31 @@

var __defProp = Object.defineProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, {get: all[name], enumerable: true});
};
'use strict';
// lib/index.js
__export(exports, {
format: () => format_default,
generate: () => generate_default,
parse: () => parse_default,
validate: () => validate_default
});
Object.defineProperty(exports, '__esModule', { value: true });
// lib/pad.js
function pad2(value) {
return value > 9 ? `${value}` : `0${value}`;
function pad2 (value) {
return value > 9 ? `${value}` : `0${value}`
}
function pad3(value) {
return value > 99 ? `${value}` : value > 9 ? `0${value}` : `00${value}`;
function pad3 (value) {
/* c8 ignore next */
return value > 99 ? `${value}` : value > 9 ? `0${value}` : `00${value}`
}
// lib/generate.js
function generateBuildNumber(options) {
function generateBuildNumber (options) {
let build = getBuildStamp();
options || (options = {});
if (typeof options === "string") {
options = {version: options};
if (typeof options === 'string') {
options = { version: options };
}
const version = options.version;
if (version) {
const versionSeparator = options.versionSeparator || ".";
const versionSeparator = options.versionSeparator || '.';
build = version.trim() + versionSeparator.trim() + build;
}
return build;
return build
}
function getBuildStamp() {
function getBuildStamp () {
const now = new Date();

@@ -44,13 +35,14 @@ const year = now.getFullYear() % 100;

const day = now.getDate();
// Count 2-minute intervals elapsed since midnight:(HH * 60 + MM) / 2
const counter = parseInt((now.getHours() * 60 + now.getMinutes()) / 2);
return `${pad2(year)}${pad2(month)}${pad2(day)}${pad3(counter)}`;
// Format the stamp as YYMMDDCCC
return `${pad2(year)}${pad2(month)}${pad2(day)}${pad3(counter)}`
}
var generate_default = generateBuildNumber;
// lib/split.js
function splitBuildNumber(build) {
function splitBuildNumber (build) {
const parts = /(\d{2})(\d{2})(\d{2})(\d{3})$/.exec(build.trim());
if (!parts) {
throw new Error('Build number has to end with "YYMMDDCCC".');
throw new Error('Build number has to end with "YYMMDDCCC".')
}
const year = +parts[1];

@@ -61,35 +53,35 @@ const month = +parts[2];

if (!(year >= 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31)) {
throw new Error("Build number has to contain numbers formatting a date.");
throw new Error('Build number has to contain numbers formatting a date.')
}
return {year, month, day, counter};
return { year, month, day, counter }
}
var split_default = splitBuildNumber;
// lib/validate.js
function validateBuildNumber(build) {
function validateBuildNumber (build) {
try {
split_default(build);
return true;
} catch (error) {
return false;
splitBuildNumber(build);
return true
} catch {
return false
}
}
var validate_default = validateBuildNumber;
// lib/parse.js
function parseBuildTime(build) {
let {year, month, day, counter} = split_default(build);
year += 2e3;
function parseBuildTime (build) {
let { year, month, day, counter } = splitBuildNumber(build);
// Convert the two-digit year to the full year
year += 2000;
// Prepare the month to be accepted by the Date constructor
month -= 1;
// Convert count of 2-minute intervals to minutes elapsed since midnight
counter *= 2;
const hours = parseInt(counter / 60);
const minutes = parseInt(counter % 60);
return new Date(year, month, day, hours, minutes);
return new Date(year, month, day, hours, minutes)
}
var parse_default = parseBuildTime;
// lib/format.js
function formatBuildTime(date) {
if (typeof date === "string") {
date = parse_default(date);
function formatBuildTime (date) {
if (typeof date === 'string') {
date = parseBuildTime(date);
}

@@ -99,5 +91,9 @@ const datePart = date.toDateString();

const minutes = date.getMinutes();
return `${datePart} ${pad2(hours)}:${pad2(minutes)}`;
return `${datePart} ${pad2(hours)}:${pad2(minutes)}`
}
var format_default = formatBuildTime;
exports.format = formatBuildTime;
exports.generate = generateBuildNumber;
exports.parse = parseBuildTime;
exports.validate = validateBuildNumber;
//# sourceMappingURL=index.js.map

@@ -1,50 +0,33 @@

(function(root, factory) {
if (typeof define === "function" && define.amd) {
define(factory);
} else if (typeof module === "object" && module.exports) {
module.exports = factory();
} else {
root.buildnumgen = factory();
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.buildnumgen = {}));
})(this, (function (exports) { 'use strict';
function pad2 (value) {
return value > 9 ? `${value}` : `0${value}`
}
}(typeof self !== "undefined" ? self : this, () => {
var __defProp = Object.defineProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, {get: all[name], enumerable: true});
};
// lib/index.js
var lib_exports = {};
__export(lib_exports, {
format: () => format_default,
generate: () => generate_default,
parse: () => parse_default,
validate: () => validate_default
});
// lib/pad.js
function pad2(value) {
return value > 9 ? `${value}` : `0${value}`;
function pad3 (value) {
/* c8 ignore next */
return value > 99 ? `${value}` : value > 9 ? `0${value}` : `00${value}`
}
function pad3(value) {
return value > 99 ? `${value}` : value > 9 ? `0${value}` : `00${value}`;
}
// lib/generate.js
function generateBuildNumber(options) {
function generateBuildNumber (options) {
let build = getBuildStamp();
options || (options = {});
if (typeof options === "string") {
options = {version: options};
if (typeof options === 'string') {
options = { version: options };
}
const version = options.version;
if (version) {
const versionSeparator = options.versionSeparator || ".";
const versionSeparator = options.versionSeparator || '.';
build = version.trim() + versionSeparator.trim() + build;
}
return build;
return build
}
function getBuildStamp() {
function getBuildStamp () {
const now = new Date();

@@ -54,13 +37,14 @@ const year = now.getFullYear() % 100;

const day = now.getDate();
// Count 2-minute intervals elapsed since midnight:(HH * 60 + MM) / 2
const counter = parseInt((now.getHours() * 60 + now.getMinutes()) / 2);
return `${pad2(year)}${pad2(month)}${pad2(day)}${pad3(counter)}`;
// Format the stamp as YYMMDDCCC
return `${pad2(year)}${pad2(month)}${pad2(day)}${pad3(counter)}`
}
var generate_default = generateBuildNumber;
// lib/split.js
function splitBuildNumber(build) {
function splitBuildNumber (build) {
const parts = /(\d{2})(\d{2})(\d{2})(\d{3})$/.exec(build.trim());
if (!parts) {
throw new Error('Build number has to end with "YYMMDDCCC".');
throw new Error('Build number has to end with "YYMMDDCCC".')
}
const year = +parts[1];

@@ -71,35 +55,35 @@ const month = +parts[2];

if (!(year >= 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31)) {
throw new Error("Build number has to contain numbers formatting a date.");
throw new Error('Build number has to contain numbers formatting a date.')
}
return {year, month, day, counter};
return { year, month, day, counter }
}
var split_default = splitBuildNumber;
// lib/validate.js
function validateBuildNumber(build) {
function validateBuildNumber (build) {
try {
split_default(build);
return true;
} catch (error) {
return false;
splitBuildNumber(build);
return true
} catch {
return false
}
}
var validate_default = validateBuildNumber;
// lib/parse.js
function parseBuildTime(build) {
let {year, month, day, counter} = split_default(build);
year += 2e3;
function parseBuildTime (build) {
let { year, month, day, counter } = splitBuildNumber(build);
// Convert the two-digit year to the full year
year += 2000;
// Prepare the month to be accepted by the Date constructor
month -= 1;
// Convert count of 2-minute intervals to minutes elapsed since midnight
counter *= 2;
const hours = parseInt(counter / 60);
const minutes = parseInt(counter % 60);
return new Date(year, month, day, hours, minutes);
return new Date(year, month, day, hours, minutes)
}
var parse_default = parseBuildTime;
// lib/format.js
function formatBuildTime(date) {
if (typeof date === "string") {
date = parse_default(date);
function formatBuildTime (date) {
if (typeof date === 'string') {
date = parseBuildTime(date);
}

@@ -109,7 +93,13 @@ const datePart = date.toDateString();

const minutes = date.getMinutes();
return `${datePart} ${pad2(hours)}:${pad2(minutes)}`;
return `${datePart} ${pad2(hours)}:${pad2(minutes)}`
}
var format_default = formatBuildTime;
return lib_exports;
exports.format = formatBuildTime;
exports.generate = generateBuildNumber;
exports.parse = parseBuildTime;
exports.validate = validateBuildNumber;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=index.umd.js.map

@@ -1,2 +0,2 @@

(function(root,factory){if(typeof define==="function"&&define.amd){define(factory);}else if(typeof module==="object"&&module.exports){module.exports=factory();}else{root.buildnumgen=factory();}}(typeof self!=="undefined"?self:this,()=>{var c=Object.defineProperty,g=t=>c(t,"__esModule",{value:!0}),$=(t,r)=>{g(t);for(var e in r)c(t,e,{get:r[e],enumerable:!0})},D={};$(D,{format:()=>f,generate:()=>m,parse:()=>u,validate:()=>p});function i(t){return t>9?`${t}`:`0${t}`}function d(t){return t>99?`${t}`:t>9?`0${t}`:`00${t}`}function B(t){let r=h();t||(t={}),typeof t=="string"&&(t={version:t});let e=t.version;if(e){let n=t.versionSeparator||".";r=e.trim()+n.trim()+r}return r}function h(){let t=new Date,r=t.getFullYear()%100,e=t.getMonth()+1,n=t.getDate(),o=parseInt((t.getHours()*60+t.getMinutes())/2);return`${i(r)}${i(e)}${i(n)}${d(o)}`}var m=B;function b(t){let r=/(\d{2})(\d{2})(\d{2})(\d{3})$/.exec(t.trim());if(!r)throw new Error('Build number has to end with "YYMMDDCCC".');let e=+r[1],n=+r[2],o=+r[3],s=+r[4];if(!(e>=0&&n>=1&&n<=12&&o>=1&&o<=31))throw new Error("Build number has to contain numbers formatting a date.");return{year:e,month:n,day:o,counter:s}}var a=b;function y(t){try{return a(t),!0}catch(r){return!1}}var p=y;function w(t){let{year:r,month:e,day:n,counter:o}=a(t);r+=2e3,e-=1,o*=2;let s=parseInt(o/60),l=parseInt(o%60);return new Date(r,e,n,s,l)}var u=w;function x(t){typeof t=="string"&&(t=u(t));let r=t.toDateString(),e=t.getHours(),n=t.getMinutes();return`${r} ${i(e)}:${i(n)}`}var f=x;return D;}));
!function(b,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((b="undefined"!=typeof globalThis?globalThis:b||self).buildnumgen={})}(this,function(a){"use strict";function c(a){return a>9?`${a}`:`0${a}`}function d(e){let a=/(\d{2})(\d{2})(\d{2})(\d{3})$/.exec(e.trim());if(!a)throw Error('Build number has to end with "YYMMDDCCC".');let d=+a[1],b=+a[2],c=+a[3],f=+a[4];if(!(d>=0&&b>=1&&b<=12&&c>=1&&c<=31))throw Error("Build number has to contain numbers formatting a date.");return{year:d,month:b,day:c,counter:f}}function b(e){let{year:b,month:c,day:f,counter:a}=d(e);b+=2e3,c-=1,a*=2;let g=parseInt(a/60),h=parseInt(a%60);return new Date(b,c,f,g,h)}a.format=function(a){"string"==typeof a&&(a=b(a));let d=a.toDateString(),e=a.getHours(),f=a.getMinutes();return`${d} ${c(e)}:${c(f)}`},a.generate=function(a){let b=function h(){var a;let b=new Date,d=b.getFullYear()%100,e=b.getMonth()+1,f=b.getDate(),g=parseInt((60*b.getHours()+b.getMinutes())/2);return`${c(d)}${c(e)}${c(f)}${(a=g)>99?`${a}`:a>9?`0${a}`:`00${a}`}`}();a||(a={}),"string"==typeof a&&(a={version:a});let d=a.version;if(d){let e=a.versionSeparator||".";b=d.trim()+e.trim()+b}return b},a.parse=b,a.validate=function(a){try{return d(a),!0}catch{return!1}},Object.defineProperty(a,"__esModule",{value:!0})})
//# sourceMappingURL=index.umd.min.js.map
{
"name": "build-number-generator",
"description": "Generates a unique build number with a human-readable build time.",
"version": "1.0.0",
"version": "2.0.0",
"homepage": "https://github.com/prantlf/build-number-generator#readme",

@@ -26,9 +26,15 @@ "author": {

"engines": {
"node": ">=8"
"node": ">=14.8"
},
"type": "module",
"main": "dist/index.js",
"module": "dist/index.mjs",
"browser": "dist/index.umd.js",
"browser": "dist/index.umd.min.js",
"types": "lib/index.d.ts",
"exports": {
"require": "./dist/index.cjs",
"import": "./dist/index.mjs"
},
"bin": {
"buildnumgen": "bin/buildnumgen"
"buildnumgen": "bin/buildnumgen.cjs"
},

@@ -40,22 +46,46 @@ "files": [

"scripts": {
"prepare": "node util/build",
"lint": "standard --verbose bin/buildnumgen lib tests",
"check": "tap tests/*.js",
"cover": "npm run check -- --cov --coverage-report=lcov --no-browser",
"test": "npm run lint && npm run check"
"prepare": "rollup -c",
"lint": "denolint",
"check": "teru-esm tests/*.js",
"cover": "c8 teru-esm tests/*.js",
"test": "denolint && c8 teru-esm tests/*.js"
},
"dependencies": {
"commander": "6.2.0"
"c8": {
"check-coverage": true,
"reporter": [
"text",
"lcov"
],
"branches": 100,
"lines": 100,
"functions": 100,
"statements": 100
},
"release": {
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
[
"@semantic-release/github",
{
"failComment": false
}
],
"@semantic-release/git"
]
},
"devDependencies": {
"@prantlf/esbuild": "0.8.17",
"coveralls": "3.1.0",
"eslint-config-standard": "16.0.2",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.1.0",
"sprintf-js": "1.1.2",
"standard": "16.0.3",
"tap": "14.11.0"
"@node-rs/deno-lint": "^1.13.1",
"@semantic-release/changelog": "^6.0.1",
"@semantic-release/git": "^10.0.1",
"c8": "^7.11.3",
"rollup": "^2.75.6",
"rollup-plugin-esbuild-minify": "^1.0.4",
"rollup-plugin-swc-minify": "^1.0.2",
"sprintf-js": "^1.1.2",
"tehanu": "^1.0.1",
"tehanu-repo-coco": "^1.0.0",
"tehanu-teru": "^1.0.0"
},

@@ -62,0 +92,0 @@ "keywords": [

# build-number-generator
[![NPM version](https://badge.fury.io/js/build-number-generator.png)](http://badge.fury.io/js/build-number-generator)
[![Build Status](https://travis-ci.org/prantlf/build-number-generator.png)](https://travis-ci.org/prantlf/build-number-generator)
[![Coverage Status](https://coveralls.io/repos/github/prantlf/build-number-generator/badge.svg?branch=master)](https://coveralls.io/github/prantlf/build-number-generator?branch=master)
[![Dependency Status](https://david-dm.org/prantlf/build-number-generator.svg)](https://david-dm.org/prantlf/build-number-generator)
[![devDependency Status](https://david-dm.org/prantlf/build-number-generator/dev-status.svg)](https://david-dm.org/prantlf/build-number-generator#info=devDependencies)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![Latest version](https://img.shields.io/npm/v/build-number-generator)
![Dependency status](https://img.shields.io/librariesio/release/npm/build-number-generator)
](https://www.npmjs.com/package/build-number-generator)
[![Coverage](https://codecov.io/gh/prantlf/build-number-generator/branch/master/graph/badge.svg)](https://codecov.io/gh/prantlf/build-number-generator)
Generates a build number to be appended to your product version number, which is unique for each build and which can be read "by a human" to learn about the build time. No need for maintaining the most recent build number in your sources, incrementing it during the build and committing & pushing the new one to your sources.

@@ -13,2 +12,4 @@

**Note**: If you use Node.js < 10, stay with the versions 1.x. If you use Node.js < 14.8, stay with the versions 2.x. The functionality of the command-line script and of the API is the same.
## Features

@@ -26,3 +27,6 @@

* Command-line tool to generate, validate and parse the build numbers. (Can be integrated to any build script.)
* [ESM], [CJS] and [UMD] modules offering an [API] for programmatic usage in [Node.js] and the browser. Can be integrated to JavaScript build scripts like [Grunt] or [Gulp].
* [ESM], [CJS] and [UMD] modules offering an [API] for programmatic usage in [Node.js], Deno and a web browser. Can be integrated to JavaScript build scripts like [Grunt] or [Gulp].
* Includes TypeScript types.
* No dependencies.
* Tiny size - 1.12 kB minified, 602 B gzipped, 530 B brotlied.

@@ -197,3 +201,3 @@ ### Example

Copyright (c) 2018-2020 Ferdinand Prantl
Copyright (c) 2018-2022 Ferdinand Prantl

@@ -200,0 +204,0 @@ Licensed under the MIT license.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc