From b031b9afdd08e6853a3154b2b4747accf012cb97 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:05 +0100 Subject: [PATCH 1/7] docs: add a NOTICE file and ship it in the package Records the copyright, the Apache-2.0 licence, the separate terms of the banner artwork and the trademark notice. package.json now publishes it next to dist. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- NOTICE | 31 +++++++++++++++++++++++++++++++ package.json | 3 ++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 NOTICE diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..33957829 --- /dev/null +++ b/NOTICE @@ -0,0 +1,31 @@ +@bootgs/utils +Utilities for Google Apps Script(TM) projects +Copyright 2025-2026 Maksym Stoianov + +This product is licensed under the Apache License, Version 2.0 (see LICENSE). + +This product includes software developed by Maksym Stoianov +(https://maksymstoianov.com) and contributors to https://github.com/bootgs/utils. + +------------------------------------------------------------------------------- +Third-party software +------------------------------------------------------------------------------- + +The published npm package has no runtime dependencies and bundles no +third-party code. + +------------------------------------------------------------------------------- +Artwork +------------------------------------------------------------------------------- + +The banner images in docs/assets/images (banner-*.jpg) are the work of +Daryna Mikhailenko (https://darynamikhailenko.com), who holds the copyright +in them. They are NOT covered by the Apache License 2.0 and are not part of +the npm package. Terms of reuse: docs/assets/images/README.md. + +------------------------------------------------------------------------------- +Trademarks +------------------------------------------------------------------------------- + +Google Apps Script is a trademark of Google LLC. This project is not +affiliated with, endorsed by or sponsored by Google LLC. See TRADEMARKS.md. diff --git a/package.json b/package.json index d9092cea..f4337570 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "files": [ - "dist" + "dist", + "NOTICE" ], "engines": { "node": ">=22.14.0" From 65f9ae13cccf8d9eb2abecb44aba3301c04e21eb Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:07 +0100 Subject: [PATCH 2/7] chore: add SPDX licence identifiers to the sources Every file under src/ starts with // SPDX-License-Identifier: Apache-2.0. The line is not JSDoc, so the generated documentation is unchanged. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- src/appsscript/admin/index.ts | 1 + src/appsscript/admin/isAdmin.ts | 1 + src/appsscript/admin/nonAdmin.ts | 1 + src/appsscript/admin/requireAdmin.ts | 1 + src/appsscript/base/getByteSize.ts | 1 + src/appsscript/base/getTriggerById.ts | 1 + src/appsscript/base/index.ts | 1 + src/appsscript/doc/index.ts | 1 + src/appsscript/drive/createFolder.ts | 1 + src/appsscript/drive/index.ts | 1 + src/appsscript/form/index.ts | 1 + src/appsscript/index.ts | 1 + src/appsscript/net/index.ts | 1 + src/appsscript/net/requireValidToken.ts | 1 + src/appsscript/requireRepository.ts | 1 + src/appsscript/requireService.ts | 1 + src/appsscript/sheet/appendColumn.ts | 1 + src/appsscript/sheet/appendColumns.ts | 1 + src/appsscript/sheet/appendRow.ts | 1 + src/appsscript/sheet/appendRows.ts | 1 + src/appsscript/sheet/clearColumnsByConditional.ts | 1 + src/appsscript/sheet/clearRowsByConditional.ts | 1 + src/appsscript/sheet/convertRichTextToHtml.ts | 1 + src/appsscript/sheet/deleteColumnsByConditional.ts | 1 + src/appsscript/sheet/deleteRowsByConditional.ts | 1 + src/appsscript/sheet/doGridRangesIntersect.ts | 1 + src/appsscript/sheet/extractRangeFromA1Notation.ts | 1 + src/appsscript/sheet/extractSheetNameFromA1Notation.ts | 1 + src/appsscript/sheet/getColumnIndexByLetter.ts | 1 + src/appsscript/sheet/getColumnLetterByIndex.ts | 1 + src/appsscript/sheet/getColumnLetterByPosition.ts | 1 + src/appsscript/sheet/getColumnPositionByLetter.ts | 1 + src/appsscript/sheet/getNamedRangeByName.ts | 1 + src/appsscript/sheet/getSchema.ts | 1 + src/appsscript/sheet/getSheetById.ts | 1 + src/appsscript/sheet/getSheetByIndex.ts | 1 + src/appsscript/sheet/getValues.ts | 1 + src/appsscript/sheet/highlightHtml.ts | 1 + src/appsscript/sheet/index.ts | 1 + src/appsscript/sheet/insertSchema.ts | 1 + src/appsscript/sheet/isCellGridRange.ts | 1 + src/appsscript/sheet/isGridRangeContainedIn.ts | 1 + src/appsscript/sheet/isGridRangeSameDimensions.ts | 1 + src/appsscript/sheet/isRange.ts | 1 + src/appsscript/sheet/isRichTextValue.ts | 1 + src/appsscript/sheet/isSheet.ts | 1 + src/appsscript/sheet/isSpreadsheet.ts | 1 + src/appsscript/sheet/isTextStyle.ts | 1 + src/appsscript/sheet/isValidSheetId.ts | 1 + src/appsscript/sheet/isValidSheetName.ts | 1 + src/appsscript/sheet/isValidSpreadsheetId.ts | 1 + src/appsscript/sheet/nonCellGridRange.ts | 1 + src/appsscript/sheet/nonGridRangeContainedIn.ts | 1 + src/appsscript/sheet/nonGridRangeSameDimensions.ts | 1 + src/appsscript/sheet/nonRange.ts | 1 + src/appsscript/sheet/nonRichTextValue.ts | 1 + src/appsscript/sheet/nonSheet.ts | 1 + src/appsscript/sheet/nonSpreadsheet.ts | 1 + src/appsscript/sheet/nonTextStyle.ts | 1 + src/appsscript/sheet/nonValidSheetId.ts | 1 + src/appsscript/sheet/nonValidSheetName.ts | 1 + src/appsscript/sheet/nonValidSpreadsheetId.ts | 1 + src/appsscript/sheet/parseA1Notation.ts | 1 + src/appsscript/sheet/parseA1Notations.ts | 1 + src/appsscript/sheet/prependColumn.ts | 1 + src/appsscript/sheet/prependColumns.ts | 1 + src/appsscript/sheet/prependRow.ts | 1 + src/appsscript/sheet/prependRows.ts | 1 + src/appsscript/sheet/removeSchema.ts | 1 + src/appsscript/sheet/requireCellGridRange.ts | 1 + src/appsscript/sheet/requireGridRangeContainedIn.ts | 1 + src/appsscript/sheet/requireGridRangeSameDimensions.ts | 1 + src/appsscript/sheet/requireRange.ts | 1 + src/appsscript/sheet/requireRichTextValue.ts | 1 + src/appsscript/sheet/requireSheet.ts | 1 + src/appsscript/sheet/requireSpreadsheet.ts | 1 + src/appsscript/sheet/requireTextStyle.ts | 1 + src/appsscript/sheet/requireValidSheetId.ts | 1 + src/appsscript/sheet/requireValidSheetName.ts | 1 + src/appsscript/sheet/requireValidSpreadsheetId.ts | 1 + src/appsscript/sheet/sortSheets.ts | 1 + src/appsscript/sheet/toA1Notation.ts | 1 + src/appsscript/sheet/types/GridRange.ts | 1 + src/appsscript/sheet/types/SheetSchema.ts | 1 + src/appsscript/sheet/types/index.ts | 1 + src/appsscript/sheet/updateFormulas.ts | 1 + src/appsscript/sheet/updateSheetNameInA1Notation.ts | 1 + src/appsscript/slide/convertMarkdownToRichText.ts | 1 + src/appsscript/slide/convertRichTextToMarkdown.ts | 1 + src/appsscript/slide/findReplaceAllTextInSlide.ts | 1 + src/appsscript/slide/getSlideByIndex.ts | 1 + src/appsscript/slide/getSlideIndex.ts | 1 + src/appsscript/slide/index.ts | 1 + src/appsscript/slide/isPresentation.ts | 1 + src/appsscript/slide/isSlide.ts | 1 + src/appsscript/slide/isValidPresentationId.ts | 1 + src/appsscript/slide/isValidSlideId.ts | 1 + src/appsscript/slide/nonPresentation.ts | 1 + src/appsscript/slide/nonSlide.ts | 1 + src/appsscript/slide/nonValidPresentationId.ts | 1 + src/appsscript/slide/nonValidSlideId.ts | 1 + src/appsscript/slide/requirePresentation.ts | 1 + src/appsscript/slide/requireSlide.ts | 1 + src/appsscript/slide/requireValidPresentationId.ts | 1 + src/appsscript/slide/requireValidSlideId.ts | 1 + src/appsscript/ui/checkMultipleAccount.ts | 1 + src/appsscript/ui/index.ts | 1 + src/appsscript/ui/isHtmlOutput.ts | 1 + src/appsscript/ui/isTextOutput.ts | 1 + src/appsscript/ui/isUi.ts | 1 + src/appsscript/ui/nonHtmlOutput.ts | 1 + src/appsscript/ui/nonTextOutput.ts | 1 + src/appsscript/ui/nonUi.ts | 1 + src/appsscript/ui/requireHtmlOutput.ts | 1 + src/appsscript/ui/requireTextOutput.ts | 1 + src/appsscript/ui/requireUi.ts | 1 + src/exception/AuthorizationException.ts | 1 + src/exception/EmptyStringException.ts | 1 + src/exception/Exception.ts | 1 + src/exception/IllegalArgumentException.ts | 1 + src/exception/IllegalStateException.ts | 1 + src/exception/InvalidEmailFormatException.ts | 1 + src/exception/InvalidStringException.ts | 1 + src/exception/NullPointerException.ts | 1 + src/exception/RepositoryIsNotDefinedException.ts | 1 + src/exception/RuntimeException.ts | 1 + src/exception/ServiceIsNotDefinedException.ts | 1 + src/exception/appsscript/admin/AdminDirectoryException.ts | 1 + src/exception/appsscript/admin/index.ts | 1 + src/exception/appsscript/index.ts | 1 + src/exception/appsscript/sheet/InvalidGridRangeException.ts | 1 + src/exception/appsscript/sheet/InvalidRangeException.ts | 1 + src/exception/appsscript/sheet/InvalidSheetException.ts | 1 + src/exception/appsscript/sheet/InvalidSpreadsheetException.ts | 1 + src/exception/appsscript/sheet/index.ts | 1 + src/exception/appsscript/slide/InvalidPresentationException.ts | 1 + src/exception/appsscript/slide/SlideNotFoundException.ts | 1 + src/exception/appsscript/slide/index.ts | 1 + src/exception/index.ts | 1 + src/exception/net/AuthenticationException.ts | 1 + src/exception/net/index.ts | 1 + src/html/decodeHtml.ts | 1 + src/html/encodeHtml.ts | 1 + src/html/escapeHtml.ts | 1 + src/html/escapeXml.ts | 1 + src/html/index.ts | 1 + src/index.ts | 1 + src/json/index.ts | 1 + src/json/parseJson.ts | 1 + src/json/stringifyJson.ts | 1 + src/lang/Class.ts | 1 + src/lang/Iterator.ts | 1 + src/lang/array/chunk.ts | 1 + src/lang/array/compact.ts | 1 + src/lang/array/first.ts | 1 + src/lang/array/index.ts | 1 + src/lang/array/intersect.ts | 1 + src/lang/array/is2DArray.ts | 1 + src/lang/array/isConsistent2DArray.ts | 1 + src/lang/array/last.ts | 1 + src/lang/array/non2DArray.ts | 1 + src/lang/array/nonConsistent2DArray.ts | 1 + src/lang/array/require2DArray.ts | 1 + src/lang/array/requireConsistent2DArray.ts | 1 + src/lang/array/requireNoNilElements.ts | 1 + src/lang/array/transpose.ts | 1 + src/lang/array/unique.ts | 1 + src/lang/array/without.ts | 1 + src/lang/base/index.ts | 1 + src/lang/base/isArray.ts | 1 + src/lang/base/isBoolean.ts | 1 + src/lang/base/isEmpty.ts | 1 + src/lang/base/isException.ts | 1 + src/lang/base/isFunction.ts | 1 + src/lang/base/isFunctionLike.ts | 1 + src/lang/base/isLength.ts | 1 + src/lang/base/isNil.ts | 1 + src/lang/base/isNull.ts | 1 + src/lang/base/isNumber.ts | 1 + src/lang/base/isNumberLike.ts | 1 + src/lang/base/isObject.ts | 1 + src/lang/base/isObjectLike.ts | 1 + src/lang/base/isRegExp.ts | 1 + src/lang/base/isScalar.ts | 1 + src/lang/base/isString.ts | 1 + src/lang/base/isSymbol.ts | 1 + src/lang/base/isUndefined.ts | 1 + src/lang/base/nonArray.ts | 1 + src/lang/base/nonBoolean.ts | 1 + src/lang/base/nonEmpty.ts | 1 + src/lang/base/nonException.ts | 1 + src/lang/base/nonFunction.ts | 1 + src/lang/base/nonFunctionLike.ts | 1 + src/lang/base/nonLength.ts | 1 + src/lang/base/nonNil.ts | 1 + src/lang/base/nonNull.ts | 1 + src/lang/base/nonNumber.ts | 1 + src/lang/base/nonNumberLike.ts | 1 + src/lang/base/nonObject.ts | 1 + src/lang/base/nonObjectLike.ts | 1 + src/lang/base/nonRegExp.ts | 1 + src/lang/base/nonScalar.ts | 1 + src/lang/base/nonString.ts | 1 + src/lang/base/nonSymbol.ts | 1 + src/lang/base/nonUndefined.ts | 1 + src/lang/base/requireArray.ts | 1 + src/lang/base/requireBoolean.ts | 1 + src/lang/base/requireEmpty.ts | 1 + src/lang/base/requireException.ts | 1 + src/lang/base/requireFunction.ts | 1 + src/lang/base/requireFunctionLike.ts | 1 + src/lang/base/requireLength.ts | 1 + src/lang/base/requireNil.ts | 1 + src/lang/base/requireNonArray.ts | 1 + src/lang/base/requireNonBoolean.ts | 1 + src/lang/base/requireNonEmpty.ts | 1 + src/lang/base/requireNonException.ts | 1 + src/lang/base/requireNonFunction.ts | 1 + src/lang/base/requireNonFunctionLike.ts | 1 + src/lang/base/requireNonLength.ts | 1 + src/lang/base/requireNonNil.ts | 1 + src/lang/base/requireNonNull.ts | 1 + src/lang/base/requireNonNumber.ts | 1 + src/lang/base/requireNonNumberLike.ts | 1 + src/lang/base/requireNonObject.ts | 1 + src/lang/base/requireNonObjectLike.ts | 1 + src/lang/base/requireNonRegExp.ts | 1 + src/lang/base/requireNonScalar.ts | 1 + src/lang/base/requireNonString.ts | 1 + src/lang/base/requireNonSymbol.ts | 1 + src/lang/base/requireNonUndefined.ts | 1 + src/lang/base/requireNull.ts | 1 + src/lang/base/requireNumber.ts | 1 + src/lang/base/requireNumberLike.ts | 1 + src/lang/base/requireObject.ts | 1 + src/lang/base/requireObjectLike.ts | 1 + src/lang/base/requireRegExp.ts | 1 + src/lang/base/requireScalar.ts | 1 + src/lang/base/requireState.ts | 1 + src/lang/base/requireString.ts | 1 + src/lang/base/requireSymbol.ts | 1 + src/lang/base/requireUndefined.ts | 1 + src/lang/function/index.ts | 1 + src/lang/function/retry.ts | 1 + src/lang/index.ts | 1 + src/lang/number/index.ts | 1 + src/lang/number/isCountable.ts | 1 + src/lang/number/isDouble.ts | 1 + src/lang/number/isFloat.ts | 1 + src/lang/number/isInteger.ts | 1 + src/lang/number/isNaN.ts | 1 + src/lang/number/isNonNegative.ts | 1 + src/lang/number/isSafeInteger.ts | 1 + src/lang/number/nonCountable.ts | 1 + src/lang/number/nonDouble.ts | 1 + src/lang/number/nonFloat.ts | 1 + src/lang/number/nonInteger.ts | 1 + src/lang/number/nonNaN.ts | 1 + src/lang/number/nonNegative.ts | 1 + src/lang/number/nonSafeInteger.ts | 1 + src/lang/number/requireCountable.ts | 1 + src/lang/number/requireDouble.ts | 1 + src/lang/number/requireFloat.ts | 1 + src/lang/number/requireInteger.ts | 1 + src/lang/number/requireNaN.ts | 1 + src/lang/number/requireNonDouble.ts | 1 + src/lang/number/requireNonFloat.ts | 1 + src/lang/number/requireNonInteger.ts | 1 + src/lang/number/requireNonNaN.ts | 1 + src/lang/number/requireNonSafeInteger.ts | 1 + src/lang/number/requireSafeInteger.ts | 1 + src/lang/number/toInteger.ts | 1 + src/lang/object/ObjectTag.ts | 1 + src/lang/object/equals.ts | 1 + src/lang/object/flat.ts | 1 + src/lang/object/getPath.ts | 1 + src/lang/object/hashCode.ts | 1 + src/lang/object/index.ts | 1 + src/lang/object/objectToString.ts | 1 + src/lang/object/setPath.ts | 1 + src/lang/string/escapeRegExp.ts | 1 + src/lang/string/index.ts | 1 + src/lang/string/isEmail.ts | 1 + src/lang/string/isValidLocale.ts | 1 + src/lang/string/isValidSlug.ts | 1 + src/lang/string/isValidVersion.ts | 1 + src/lang/string/isVersionCompatible.ts | 1 + src/lang/string/merge.ts | 1 + src/lang/string/nonEmptyString.ts | 1 + src/lang/string/nonValidEmail.ts | 1 + src/lang/string/nonValidLocale.ts | 1 + src/lang/string/nonValidSlug.ts | 1 + src/lang/string/nonValidVersion.ts | 1 + src/lang/string/nonVersionCompatible.ts | 1 + src/lang/string/requireNonEmptyString.ts | 1 + src/lang/string/requireValidEmail.ts | 1 + src/lang/string/requireValidLocale.ts | 1 + src/lang/string/requireValidSlug.ts | 1 + src/lang/string/requireValidVersion.ts | 1 + src/lang/string/requireVersionCompatible.ts | 1 + src/lang/string/toCamelCase.ts | 1 + src/lang/string/toKebabCase.ts | 1 + src/lang/string/toLowerCase.ts | 1 + src/lang/string/toProperCase.ts | 1 + src/lang/string/toSnakeCase.ts | 1 + src/lang/string/toUpperCase.ts | 1 + src/lang/string/versionCompare.ts | 1 + src/net/emitter/index.ts | 1 + src/net/index.ts | 1 + src/net/path/index.ts | 1 + src/net/path/isAbsolute.ts | 1 + src/net/path/isRelative.ts | 1 + src/net/path/isValidDomain.ts | 1 + src/net/path/join.ts | 1 + src/net/path/nonAbsolute.ts | 1 + src/net/path/nonRelative.ts | 1 + src/net/path/nonValidDomain.ts | 1 + src/net/path/normalize.ts | 1 + src/net/path/parse.ts | 1 + src/net/path/requireAbsolute.ts | 1 + src/net/path/requireRelative.ts | 1 + src/net/path/requireValidDomain.ts | 1 + src/net/path/types/ParsedPath.ts | 1 + src/net/path/types/index.ts | 1 + src/net/url/index.ts | 1 + src/net/url/isUrl.ts | 1 + src/net/url/nonUrl.ts | 1 + src/net/url/requireUrl.ts | 1 + src/time/StopWatch.ts | 1 + src/time/diff.ts | 1 + src/time/getDaysInMonth.ts | 1 + src/time/getDaysLeftInMonth.ts | 1 + src/time/index.ts | 1 + src/time/now.ts | 1 + src/time/offset.ts | 1 + src/time/types/TimeUnit.ts | 1 + src/time/types/index.ts | 1 + 337 files changed, 337 insertions(+) diff --git a/src/appsscript/admin/index.ts b/src/appsscript/admin/index.ts index 44db6f51..d7fd622a 100644 --- a/src/appsscript/admin/index.ts +++ b/src/appsscript/admin/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./isAdmin"; export * from "./nonAdmin"; diff --git a/src/appsscript/admin/isAdmin.ts b/src/appsscript/admin/isAdmin.ts index bba00a24..0b8196bd 100644 --- a/src/appsscript/admin/isAdmin.ts +++ b/src/appsscript/admin/isAdmin.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { AdminDirectoryException } from "../../exception"; import { nonFunction } from "../../lang"; diff --git a/src/appsscript/admin/nonAdmin.ts b/src/appsscript/admin/nonAdmin.ts index d70e3a60..3a764fe1 100644 --- a/src/appsscript/admin/nonAdmin.ts +++ b/src/appsscript/admin/nonAdmin.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isAdmin } from "./isAdmin"; /** diff --git a/src/appsscript/admin/requireAdmin.ts b/src/appsscript/admin/requireAdmin.ts index 6b673832..5b4fd13a 100644 --- a/src/appsscript/admin/requireAdmin.ts +++ b/src/appsscript/admin/requireAdmin.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { AuthorizationException } from "../../exception"; import { isAdmin } from "./isAdmin"; diff --git a/src/appsscript/base/getByteSize.ts b/src/appsscript/base/getByteSize.ts index f04f9f9e..10ca35e8 100644 --- a/src/appsscript/base/getByteSize.ts +++ b/src/appsscript/base/getByteSize.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireString } from "../../lang"; /** diff --git a/src/appsscript/base/getTriggerById.ts b/src/appsscript/base/getTriggerById.ts index 22cad975..2dbbcbf3 100644 --- a/src/appsscript/base/getTriggerById.ts +++ b/src/appsscript/base/getTriggerById.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../../lang"; /** diff --git a/src/appsscript/base/index.ts b/src/appsscript/base/index.ts index 8ff2cffa..32d64cdf 100644 --- a/src/appsscript/base/index.ts +++ b/src/appsscript/base/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./getByteSize"; export * from "./getTriggerById"; diff --git a/src/appsscript/doc/index.ts b/src/appsscript/doc/index.ts index e69de29b..cdc649ac 100644 --- a/src/appsscript/doc/index.ts +++ b/src/appsscript/doc/index.ts @@ -0,0 +1 @@ +// SPDX-License-Identifier: Apache-2.0 diff --git a/src/appsscript/drive/createFolder.ts b/src/appsscript/drive/createFolder.ts index 99c51585..066ff987 100644 --- a/src/appsscript/drive/createFolder.ts +++ b/src/appsscript/drive/createFolder.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalStateException } from "../../exception"; import { requireNonEmptyString } from "../../lang"; diff --git a/src/appsscript/drive/index.ts b/src/appsscript/drive/index.ts index 53a121ef..6ae0fd0b 100644 --- a/src/appsscript/drive/index.ts +++ b/src/appsscript/drive/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./createFolder"; diff --git a/src/appsscript/form/index.ts b/src/appsscript/form/index.ts index e69de29b..cdc649ac 100644 --- a/src/appsscript/form/index.ts +++ b/src/appsscript/form/index.ts @@ -0,0 +1 @@ +// SPDX-License-Identifier: Apache-2.0 diff --git a/src/appsscript/index.ts b/src/appsscript/index.ts index 6e0ba52f..a05eb58c 100644 --- a/src/appsscript/index.ts +++ b/src/appsscript/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./base"; export * from "./admin"; diff --git a/src/appsscript/net/index.ts b/src/appsscript/net/index.ts index a6c94741..88b091be 100644 --- a/src/appsscript/net/index.ts +++ b/src/appsscript/net/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./requireValidToken"; diff --git a/src/appsscript/net/requireValidToken.ts b/src/appsscript/net/requireValidToken.ts index 1b1e6a1e..0520627e 100644 --- a/src/appsscript/net/requireValidToken.ts +++ b/src/appsscript/net/requireValidToken.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { AuthenticationException } from "../../exception"; import { isString } from "../../lang"; diff --git a/src/appsscript/requireRepository.ts b/src/appsscript/requireRepository.ts index 29831f99..2155a912 100644 --- a/src/appsscript/requireRepository.ts +++ b/src/appsscript/requireRepository.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RepositoryIsNotDefinedException } from "../exception"; /** diff --git a/src/appsscript/requireService.ts b/src/appsscript/requireService.ts index 08c8ab7e..936900a9 100644 --- a/src/appsscript/requireService.ts +++ b/src/appsscript/requireService.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { ServiceIsNotDefinedException } from "../exception"; /** diff --git a/src/appsscript/sheet/appendColumn.ts b/src/appsscript/sheet/appendColumn.ts index efdc7540..d0634914 100644 --- a/src/appsscript/sheet/appendColumn.ts +++ b/src/appsscript/sheet/appendColumn.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../../lang"; import { appendColumns, type Options } from "./appendColumns"; diff --git a/src/appsscript/sheet/appendColumns.ts b/src/appsscript/sheet/appendColumns.ts index 114034ee..152d14a7 100644 --- a/src/appsscript/sheet/appendColumns.ts +++ b/src/appsscript/sheet/appendColumns.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isConsistent2DArray, isNil } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/appendRow.ts b/src/appsscript/sheet/appendRow.ts index b3f0cd93..cc9929b9 100644 --- a/src/appsscript/sheet/appendRow.ts +++ b/src/appsscript/sheet/appendRow.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { appendRows, type AppendRowsOptions } from "./appendRows"; /** diff --git a/src/appsscript/sheet/appendRows.ts b/src/appsscript/sheet/appendRows.ts index 7480ac17..d9fe73cf 100644 --- a/src/appsscript/sheet/appendRows.ts +++ b/src/appsscript/sheet/appendRows.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isConsistent2DArray, isNil } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/clearColumnsByConditional.ts b/src/appsscript/sheet/clearColumnsByConditional.ts index e286dccc..b1150faf 100644 --- a/src/appsscript/sheet/clearColumnsByConditional.ts +++ b/src/appsscript/sheet/clearColumnsByConditional.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil, requireCountable } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/clearRowsByConditional.ts b/src/appsscript/sheet/clearRowsByConditional.ts index 9fe9a1ac..485127b3 100644 --- a/src/appsscript/sheet/clearRowsByConditional.ts +++ b/src/appsscript/sheet/clearRowsByConditional.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil, requireCountable } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/convertRichTextToHtml.ts b/src/appsscript/sheet/convertRichTextToHtml.ts index 460ac184..f5a11682 100644 --- a/src/appsscript/sheet/convertRichTextToHtml.ts +++ b/src/appsscript/sheet/convertRichTextToHtml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isRichTextValue } from "./isRichTextValue"; diff --git a/src/appsscript/sheet/deleteColumnsByConditional.ts b/src/appsscript/sheet/deleteColumnsByConditional.ts index f67a9cf1..7e1f1129 100644 --- a/src/appsscript/sheet/deleteColumnsByConditional.ts +++ b/src/appsscript/sheet/deleteColumnsByConditional.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil, requireCountable } from "../../lang"; import { type ColumnConditionalOptions, type ColumnPredicate } from "./clearColumnsByConditional"; diff --git a/src/appsscript/sheet/deleteRowsByConditional.ts b/src/appsscript/sheet/deleteRowsByConditional.ts index 881c7305..0bea14dc 100644 --- a/src/appsscript/sheet/deleteRowsByConditional.ts +++ b/src/appsscript/sheet/deleteRowsByConditional.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil, requireCountable } from "../../lang"; import { type RowConditionalOptions, type RowPredicate } from "./clearRowsByConditional"; diff --git a/src/appsscript/sheet/doGridRangesIntersect.ts b/src/appsscript/sheet/doGridRangesIntersect.ts index 897d32ef..fd933126 100644 --- a/src/appsscript/sheet/doGridRangesIntersect.ts +++ b/src/appsscript/sheet/doGridRangesIntersect.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidGridRangeException } from "../../exception"; import { isObject } from "../../lang"; import { isValidSheetId } from "./isValidSheetId"; diff --git a/src/appsscript/sheet/extractRangeFromA1Notation.ts b/src/appsscript/sheet/extractRangeFromA1Notation.ts index 228b6d6f..2ec7c2ff 100644 --- a/src/appsscript/sheet/extractRangeFromA1Notation.ts +++ b/src/appsscript/sheet/extractRangeFromA1Notation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isString, requireNonEmptyString } from "../../lang"; import { parseA1Notation } from "./parseA1Notation"; diff --git a/src/appsscript/sheet/extractSheetNameFromA1Notation.ts b/src/appsscript/sheet/extractSheetNameFromA1Notation.ts index d724bfad..3145d90b 100644 --- a/src/appsscript/sheet/extractSheetNameFromA1Notation.ts +++ b/src/appsscript/sheet/extractSheetNameFromA1Notation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isString } from "../../lang"; import { isValidSheetName } from "./isValidSheetName"; diff --git a/src/appsscript/sheet/getColumnIndexByLetter.ts b/src/appsscript/sheet/getColumnIndexByLetter.ts index 38a0bd2c..72539a37 100644 --- a/src/appsscript/sheet/getColumnIndexByLetter.ts +++ b/src/appsscript/sheet/getColumnIndexByLetter.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { requireNonEmptyString } from "../../lang"; diff --git a/src/appsscript/sheet/getColumnLetterByIndex.ts b/src/appsscript/sheet/getColumnLetterByIndex.ts index d8dcf40b..f21718f5 100644 --- a/src/appsscript/sheet/getColumnLetterByIndex.ts +++ b/src/appsscript/sheet/getColumnLetterByIndex.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isInteger } from "../../lang"; diff --git a/src/appsscript/sheet/getColumnLetterByPosition.ts b/src/appsscript/sheet/getColumnLetterByPosition.ts index 08c6d11a..12dcf989 100644 --- a/src/appsscript/sheet/getColumnLetterByPosition.ts +++ b/src/appsscript/sheet/getColumnLetterByPosition.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { getColumnLetterByIndex } from "./getColumnLetterByIndex"; /** diff --git a/src/appsscript/sheet/getColumnPositionByLetter.ts b/src/appsscript/sheet/getColumnPositionByLetter.ts index 8ae3913d..7002da04 100644 --- a/src/appsscript/sheet/getColumnPositionByLetter.ts +++ b/src/appsscript/sheet/getColumnPositionByLetter.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { getColumnIndexByLetter } from "./getColumnIndexByLetter"; diff --git a/src/appsscript/sheet/getNamedRangeByName.ts b/src/appsscript/sheet/getNamedRangeByName.ts index d1f6f9b3..debfdbe9 100644 --- a/src/appsscript/sheet/getNamedRangeByName.ts +++ b/src/appsscript/sheet/getNamedRangeByName.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../../lang"; import { requireSpreadsheet } from "./requireSpreadsheet"; diff --git a/src/appsscript/sheet/getSchema.ts b/src/appsscript/sheet/getSchema.ts index c68d6915..7da8f510 100644 --- a/src/appsscript/sheet/getSchema.ts +++ b/src/appsscript/sheet/getSchema.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil } from "../../lang"; import { LEGACY_SCHEMA_METADATA_KEYS, SCHEMA_METADATA_KEY } from "./insertSchema"; import { requireSheet } from "./requireSheet"; diff --git a/src/appsscript/sheet/getSheetById.ts b/src/appsscript/sheet/getSheetById.ts index 22c5e7fa..5aff7d16 100644 --- a/src/appsscript/sheet/getSheetById.ts +++ b/src/appsscript/sheet/getSheetById.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isCountable, isEmpty } from "../../lang"; diff --git a/src/appsscript/sheet/getSheetByIndex.ts b/src/appsscript/sheet/getSheetByIndex.ts index d0d0f508..bf063c94 100644 --- a/src/appsscript/sheet/getSheetByIndex.ts +++ b/src/appsscript/sheet/getSheetByIndex.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isCountable, isEmpty } from "../../lang"; diff --git a/src/appsscript/sheet/getValues.ts b/src/appsscript/sheet/getValues.ts index a0c6b7dd..be985db0 100644 --- a/src/appsscript/sheet/getValues.ts +++ b/src/appsscript/sheet/getValues.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil, requireCountable } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/highlightHtml.ts b/src/appsscript/sheet/highlightHtml.ts index 777511f3..f29f00a1 100644 --- a/src/appsscript/sheet/highlightHtml.ts +++ b/src/appsscript/sheet/highlightHtml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isEmpty, isNil, isString } from "../../lang"; import { requireRange } from "./requireRange"; diff --git a/src/appsscript/sheet/index.ts b/src/appsscript/sheet/index.ts index e0534c17..ef1a1478 100644 --- a/src/appsscript/sheet/index.ts +++ b/src/appsscript/sheet/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./types"; // TODO: Abstract Sheet diff --git a/src/appsscript/sheet/insertSchema.ts b/src/appsscript/sheet/insertSchema.ts index cdbfc86c..24a987bc 100644 --- a/src/appsscript/sheet/insertSchema.ts +++ b/src/appsscript/sheet/insertSchema.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isArray, isNil, isString, requireCountable } from "../../lang"; import { requireSheet } from "./requireSheet"; diff --git a/src/appsscript/sheet/isCellGridRange.ts b/src/appsscript/sheet/isCellGridRange.ts index 0d05b5ae..4285acf7 100644 --- a/src/appsscript/sheet/isCellGridRange.ts +++ b/src/appsscript/sheet/isCellGridRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject, nonNil } from "../../lang"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/isGridRangeContainedIn.ts b/src/appsscript/sheet/isGridRangeContainedIn.ts index 55f3058c..8c2e77a3 100644 --- a/src/appsscript/sheet/isGridRangeContainedIn.ts +++ b/src/appsscript/sheet/isGridRangeContainedIn.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/isGridRangeSameDimensions.ts b/src/appsscript/sheet/isGridRangeSameDimensions.ts index d47fab4b..fcae6a91 100644 --- a/src/appsscript/sheet/isGridRangeSameDimensions.ts +++ b/src/appsscript/sheet/isGridRangeSameDimensions.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil, isObject } from "../../lang"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/isRange.ts b/src/appsscript/sheet/isRange.ts index c87cd3f3..752d8be8 100644 --- a/src/appsscript/sheet/isRange.ts +++ b/src/appsscript/sheet/isRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/sheet/isRichTextValue.ts b/src/appsscript/sheet/isRichTextValue.ts index 30a879d4..258e39ec 100644 --- a/src/appsscript/sheet/isRichTextValue.ts +++ b/src/appsscript/sheet/isRichTextValue.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/sheet/isSheet.ts b/src/appsscript/sheet/isSheet.ts index 64a59966..5302e54b 100644 --- a/src/appsscript/sheet/isSheet.ts +++ b/src/appsscript/sheet/isSheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/sheet/isSpreadsheet.ts b/src/appsscript/sheet/isSpreadsheet.ts index 2fbb222c..5bc88f54 100644 --- a/src/appsscript/sheet/isSpreadsheet.ts +++ b/src/appsscript/sheet/isSpreadsheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/sheet/isTextStyle.ts b/src/appsscript/sheet/isTextStyle.ts index 1dc00e59..a71094d2 100644 --- a/src/appsscript/sheet/isTextStyle.ts +++ b/src/appsscript/sheet/isTextStyle.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/sheet/isValidSheetId.ts b/src/appsscript/sheet/isValidSheetId.ts index 20435887..1e95a07e 100644 --- a/src/appsscript/sheet/isValidSheetId.ts +++ b/src/appsscript/sheet/isValidSheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isCountable } from "../../lang"; /** diff --git a/src/appsscript/sheet/isValidSheetName.ts b/src/appsscript/sheet/isValidSheetName.ts index dbf76b2b..daf77357 100644 --- a/src/appsscript/sheet/isValidSheetName.ts +++ b/src/appsscript/sheet/isValidSheetName.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; /** Google Sheets rejects these characters anywhere in a sheet name. */ diff --git a/src/appsscript/sheet/isValidSpreadsheetId.ts b/src/appsscript/sheet/isValidSpreadsheetId.ts index 4fff73ec..cfa264df 100644 --- a/src/appsscript/sheet/isValidSpreadsheetId.ts +++ b/src/appsscript/sheet/isValidSpreadsheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; /** Drive file ids are at least 25 characters from an unreserved alphabet. */ diff --git a/src/appsscript/sheet/nonCellGridRange.ts b/src/appsscript/sheet/nonCellGridRange.ts index 075a8970..5b2db487 100644 --- a/src/appsscript/sheet/nonCellGridRange.ts +++ b/src/appsscript/sheet/nonCellGridRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isCellGridRange } from "./isCellGridRange"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/nonGridRangeContainedIn.ts b/src/appsscript/sheet/nonGridRangeContainedIn.ts index 72fdebf4..57d67984 100644 --- a/src/appsscript/sheet/nonGridRangeContainedIn.ts +++ b/src/appsscript/sheet/nonGridRangeContainedIn.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isGridRangeContainedIn } from "./isGridRangeContainedIn"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/nonGridRangeSameDimensions.ts b/src/appsscript/sheet/nonGridRangeSameDimensions.ts index 348f58ab..503a7f30 100644 --- a/src/appsscript/sheet/nonGridRangeSameDimensions.ts +++ b/src/appsscript/sheet/nonGridRangeSameDimensions.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isGridRangeSameDimensions } from "./isGridRangeSameDimensions"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/nonRange.ts b/src/appsscript/sheet/nonRange.ts index 35245a33..311cad32 100644 --- a/src/appsscript/sheet/nonRange.ts +++ b/src/appsscript/sheet/nonRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isRange } from "./isRange"; /** diff --git a/src/appsscript/sheet/nonRichTextValue.ts b/src/appsscript/sheet/nonRichTextValue.ts index ffd439eb..68bea8a2 100644 --- a/src/appsscript/sheet/nonRichTextValue.ts +++ b/src/appsscript/sheet/nonRichTextValue.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isRichTextValue } from "./isRichTextValue"; /** diff --git a/src/appsscript/sheet/nonSheet.ts b/src/appsscript/sheet/nonSheet.ts index 17c8f489..5ec4b6e4 100644 --- a/src/appsscript/sheet/nonSheet.ts +++ b/src/appsscript/sheet/nonSheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSheet } from "./isSheet"; /** diff --git a/src/appsscript/sheet/nonSpreadsheet.ts b/src/appsscript/sheet/nonSpreadsheet.ts index 5b992ae3..8ed15e89 100644 --- a/src/appsscript/sheet/nonSpreadsheet.ts +++ b/src/appsscript/sheet/nonSpreadsheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSpreadsheet } from "./isSpreadsheet"; /** diff --git a/src/appsscript/sheet/nonTextStyle.ts b/src/appsscript/sheet/nonTextStyle.ts index c1848cb7..2f0cd1c8 100644 --- a/src/appsscript/sheet/nonTextStyle.ts +++ b/src/appsscript/sheet/nonTextStyle.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isTextStyle } from "./isTextStyle"; /** diff --git a/src/appsscript/sheet/nonValidSheetId.ts b/src/appsscript/sheet/nonValidSheetId.ts index f697c06f..69ebcedd 100644 --- a/src/appsscript/sheet/nonValidSheetId.ts +++ b/src/appsscript/sheet/nonValidSheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidSheetId } from "./isValidSheetId"; /** diff --git a/src/appsscript/sheet/nonValidSheetName.ts b/src/appsscript/sheet/nonValidSheetName.ts index 052c9a76..a08dffec 100644 --- a/src/appsscript/sheet/nonValidSheetName.ts +++ b/src/appsscript/sheet/nonValidSheetName.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidSheetName } from "./isValidSheetName"; /** diff --git a/src/appsscript/sheet/nonValidSpreadsheetId.ts b/src/appsscript/sheet/nonValidSpreadsheetId.ts index 6353401b..96d82783 100644 --- a/src/appsscript/sheet/nonValidSpreadsheetId.ts +++ b/src/appsscript/sheet/nonValidSpreadsheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidSpreadsheetId } from "./isValidSpreadsheetId"; /** diff --git a/src/appsscript/sheet/parseA1Notation.ts b/src/appsscript/sheet/parseA1Notation.ts index 3ef90590..33dc2b1f 100644 --- a/src/appsscript/sheet/parseA1Notation.ts +++ b/src/appsscript/sheet/parseA1Notation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNull, nonNull, requireNonEmptyString, toInteger } from "../../lang"; import { getColumnIndexByLetter } from "./getColumnIndexByLetter"; diff --git a/src/appsscript/sheet/parseA1Notations.ts b/src/appsscript/sheet/parseA1Notations.ts index b1b9b757..fb297ba2 100644 --- a/src/appsscript/sheet/parseA1Notations.ts +++ b/src/appsscript/sheet/parseA1Notations.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObject, isString, requireNonEmptyString } from "../../lang"; import { parseA1Notation } from "./parseA1Notation"; diff --git a/src/appsscript/sheet/prependColumn.ts b/src/appsscript/sheet/prependColumn.ts index 3e691a00..e642f4bb 100644 --- a/src/appsscript/sheet/prependColumn.ts +++ b/src/appsscript/sheet/prependColumn.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isArray, isNil } from "../../lang"; import { type Options } from "./appendColumns"; diff --git a/src/appsscript/sheet/prependColumns.ts b/src/appsscript/sheet/prependColumns.ts index 0c1b485d..f55a3865 100644 --- a/src/appsscript/sheet/prependColumns.ts +++ b/src/appsscript/sheet/prependColumns.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isConsistent2DArray, isNil, requireCountable } from "../../lang"; import { type Options } from "./appendColumns"; diff --git a/src/appsscript/sheet/prependRow.ts b/src/appsscript/sheet/prependRow.ts index ce03e19c..67536848 100644 --- a/src/appsscript/sheet/prependRow.ts +++ b/src/appsscript/sheet/prependRow.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { prependRows, type PrependRowsOptions } from "./prependRows"; /** diff --git a/src/appsscript/sheet/prependRows.ts b/src/appsscript/sheet/prependRows.ts index 427d32bb..186e5470 100644 --- a/src/appsscript/sheet/prependRows.ts +++ b/src/appsscript/sheet/prependRows.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isConsistent2DArray } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/removeSchema.ts b/src/appsscript/sheet/removeSchema.ts index 90601e06..da5183d9 100644 --- a/src/appsscript/sheet/removeSchema.ts +++ b/src/appsscript/sheet/removeSchema.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil } from "../../lang"; import { LEGACY_SCHEMA_METADATA_KEYS, SCHEMA_METADATA_KEY } from "./insertSchema"; import { requireSheet } from "./requireSheet"; diff --git a/src/appsscript/sheet/requireCellGridRange.ts b/src/appsscript/sheet/requireCellGridRange.ts index 31a36d5b..e357a02b 100644 --- a/src/appsscript/sheet/requireCellGridRange.ts +++ b/src/appsscript/sheet/requireCellGridRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidGridRangeException } from "../../exception"; import { isCellGridRange } from "./isCellGridRange"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/requireGridRangeContainedIn.ts b/src/appsscript/sheet/requireGridRangeContainedIn.ts index c80af821..8c1bb105 100644 --- a/src/appsscript/sheet/requireGridRangeContainedIn.ts +++ b/src/appsscript/sheet/requireGridRangeContainedIn.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidGridRangeException } from "../../exception"; import { isGridRangeContainedIn } from "./isGridRangeContainedIn"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/requireGridRangeSameDimensions.ts b/src/appsscript/sheet/requireGridRangeSameDimensions.ts index 5015b85c..ae41c4df 100644 --- a/src/appsscript/sheet/requireGridRangeSameDimensions.ts +++ b/src/appsscript/sheet/requireGridRangeSameDimensions.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidGridRangeException } from "../../exception"; import { isGridRangeSameDimensions } from "./isGridRangeSameDimensions"; import type { GridRange } from "./types"; diff --git a/src/appsscript/sheet/requireRange.ts b/src/appsscript/sheet/requireRange.ts index 7e54f069..28dce559 100644 --- a/src/appsscript/sheet/requireRange.ts +++ b/src/appsscript/sheet/requireRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidRangeException } from "../../exception"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/requireRichTextValue.ts b/src/appsscript/sheet/requireRichTextValue.ts index b29e6a0d..fb45b6cd 100644 --- a/src/appsscript/sheet/requireRichTextValue.ts +++ b/src/appsscript/sheet/requireRichTextValue.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isRichTextValue } from "./isRichTextValue"; diff --git a/src/appsscript/sheet/requireSheet.ts b/src/appsscript/sheet/requireSheet.ts index 5c36c32e..d16453d9 100644 --- a/src/appsscript/sheet/requireSheet.ts +++ b/src/appsscript/sheet/requireSheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidSheetException } from "../../exception"; import { isSheet } from "./isSheet"; diff --git a/src/appsscript/sheet/requireSpreadsheet.ts b/src/appsscript/sheet/requireSpreadsheet.ts index 6636a577..a0932a9f 100644 --- a/src/appsscript/sheet/requireSpreadsheet.ts +++ b/src/appsscript/sheet/requireSpreadsheet.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidSpreadsheetException } from "../../exception"; import { isSpreadsheet } from "./isSpreadsheet"; diff --git a/src/appsscript/sheet/requireTextStyle.ts b/src/appsscript/sheet/requireTextStyle.ts index 368db924..d0ae2e19 100644 --- a/src/appsscript/sheet/requireTextStyle.ts +++ b/src/appsscript/sheet/requireTextStyle.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isTextStyle } from "./isTextStyle"; diff --git a/src/appsscript/sheet/requireValidSheetId.ts b/src/appsscript/sheet/requireValidSheetId.ts index 95f5cb72..d2a3410e 100644 --- a/src/appsscript/sheet/requireValidSheetId.ts +++ b/src/appsscript/sheet/requireValidSheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidSheetId } from "./isValidSheetId"; diff --git a/src/appsscript/sheet/requireValidSheetName.ts b/src/appsscript/sheet/requireValidSheetName.ts index 2cc87cb8..638f7d52 100644 --- a/src/appsscript/sheet/requireValidSheetName.ts +++ b/src/appsscript/sheet/requireValidSheetName.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidSheetName } from "./isValidSheetName"; diff --git a/src/appsscript/sheet/requireValidSpreadsheetId.ts b/src/appsscript/sheet/requireValidSpreadsheetId.ts index 411e5857..164623e4 100644 --- a/src/appsscript/sheet/requireValidSpreadsheetId.ts +++ b/src/appsscript/sheet/requireValidSpreadsheetId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isString } from "../../lang"; import { isValidSpreadsheetId } from "./isValidSpreadsheetId"; diff --git a/src/appsscript/sheet/sortSheets.ts b/src/appsscript/sheet/sortSheets.ts index faec1bf8..0d5b4004 100644 --- a/src/appsscript/sheet/sortSheets.ts +++ b/src/appsscript/sheet/sortSheets.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isSpreadsheet } from "./isSpreadsheet"; diff --git a/src/appsscript/sheet/toA1Notation.ts b/src/appsscript/sheet/toA1Notation.ts index a1416f5b..b0a4a075 100644 --- a/src/appsscript/sheet/toA1Notation.ts +++ b/src/appsscript/sheet/toA1Notation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidGridRangeException } from "../../exception"; import { isObject } from "../../lang"; import { getColumnLetterByIndex } from "./getColumnLetterByIndex"; diff --git a/src/appsscript/sheet/types/GridRange.ts b/src/appsscript/sheet/types/GridRange.ts index bb6eef99..0b402dc9 100644 --- a/src/appsscript/sheet/types/GridRange.ts +++ b/src/appsscript/sheet/types/GridRange.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * A range on a sheets. * diff --git a/src/appsscript/sheet/types/SheetSchema.ts b/src/appsscript/sheet/types/SheetSchema.ts index 9dc154b6..16dcce6b 100644 --- a/src/appsscript/sheet/types/SheetSchema.ts +++ b/src/appsscript/sheet/types/SheetSchema.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * What a column holds, as far as a schema is concerned. * diff --git a/src/appsscript/sheet/types/index.ts b/src/appsscript/sheet/types/index.ts index 47799058..a6af1817 100644 --- a/src/appsscript/sheet/types/index.ts +++ b/src/appsscript/sheet/types/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./GridRange"; export * from "./SheetSchema"; diff --git a/src/appsscript/sheet/updateFormulas.ts b/src/appsscript/sheet/updateFormulas.ts index 93a60e63..dc476206 100644 --- a/src/appsscript/sheet/updateFormulas.ts +++ b/src/appsscript/sheet/updateFormulas.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException, InvalidSheetException } from "../../exception"; import { isFunction, isNil } from "../../lang"; import { isRange } from "./isRange"; diff --git a/src/appsscript/sheet/updateSheetNameInA1Notation.ts b/src/appsscript/sheet/updateSheetNameInA1Notation.ts index 877df6f7..aedb4402 100644 --- a/src/appsscript/sheet/updateSheetNameInA1Notation.ts +++ b/src/appsscript/sheet/updateSheetNameInA1Notation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { requireNonEmptyString } from "../../lang"; import { isValidSheetName } from "./isValidSheetName"; diff --git a/src/appsscript/slide/convertMarkdownToRichText.ts b/src/appsscript/slide/convertMarkdownToRichText.ts index 88990fad..dc5c95f2 100644 --- a/src/appsscript/slide/convertMarkdownToRichText.ts +++ b/src/appsscript/slide/convertMarkdownToRichText.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { requireString } from "../../lang"; diff --git a/src/appsscript/slide/convertRichTextToMarkdown.ts b/src/appsscript/slide/convertRichTextToMarkdown.ts index 5fc5a78a..b14edb31 100644 --- a/src/appsscript/slide/convertRichTextToMarkdown.ts +++ b/src/appsscript/slide/convertRichTextToMarkdown.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObjectLike, isString, requireArray } from "../../lang"; import type { RichTextRun, TextStyle, Theme } from "./convertMarkdownToRichText"; diff --git a/src/appsscript/slide/findReplaceAllTextInSlide.ts b/src/appsscript/slide/findReplaceAllTextInSlide.ts index 87f2d8f5..1e1b4a45 100644 --- a/src/appsscript/slide/findReplaceAllTextInSlide.ts +++ b/src/appsscript/slide/findReplaceAllTextInSlide.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSlide } from "./isSlide"; /** diff --git a/src/appsscript/slide/getSlideByIndex.ts b/src/appsscript/slide/getSlideByIndex.ts index 1fa9879c..04a3bc1d 100644 --- a/src/appsscript/slide/getSlideByIndex.ts +++ b/src/appsscript/slide/getSlideByIndex.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isPresentation } from "./isPresentation"; /** diff --git a/src/appsscript/slide/getSlideIndex.ts b/src/appsscript/slide/getSlideIndex.ts index 515973db..bf1e80c2 100644 --- a/src/appsscript/slide/getSlideIndex.ts +++ b/src/appsscript/slide/getSlideIndex.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isPresentation } from "./isPresentation"; import { isSlide } from "./isSlide"; diff --git a/src/appsscript/slide/index.ts b/src/appsscript/slide/index.ts index 703a8b99..5a253989 100644 --- a/src/appsscript/slide/index.ts +++ b/src/appsscript/slide/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./convertMarkdownToRichText"; export * from "./convertRichTextToMarkdown"; diff --git a/src/appsscript/slide/isPresentation.ts b/src/appsscript/slide/isPresentation.ts index e2352f0b..79f4ecf3 100644 --- a/src/appsscript/slide/isPresentation.ts +++ b/src/appsscript/slide/isPresentation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if a value is a {@link GoogleAppsScript.Slides.Presentation|Presentation} object. * diff --git a/src/appsscript/slide/isSlide.ts b/src/appsscript/slide/isSlide.ts index 6f4346dd..480a8430 100644 --- a/src/appsscript/slide/isSlide.ts +++ b/src/appsscript/slide/isSlide.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if a value is a {@link GoogleAppsScript.Slides.Slide|Slide} object. * diff --git a/src/appsscript/slide/isValidPresentationId.ts b/src/appsscript/slide/isValidPresentationId.ts index 194e8129..aaa88254 100644 --- a/src/appsscript/slide/isValidPresentationId.ts +++ b/src/appsscript/slide/isValidPresentationId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; /** diff --git a/src/appsscript/slide/isValidSlideId.ts b/src/appsscript/slide/isValidSlideId.ts index d11d3a46..a38ac58a 100644 --- a/src/appsscript/slide/isValidSlideId.ts +++ b/src/appsscript/slide/isValidSlideId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; /** diff --git a/src/appsscript/slide/nonPresentation.ts b/src/appsscript/slide/nonPresentation.ts index 6d4db54e..38e0e167 100644 --- a/src/appsscript/slide/nonPresentation.ts +++ b/src/appsscript/slide/nonPresentation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isPresentation } from "./isPresentation"; /** diff --git a/src/appsscript/slide/nonSlide.ts b/src/appsscript/slide/nonSlide.ts index 1e79e724..3cdebaf4 100644 --- a/src/appsscript/slide/nonSlide.ts +++ b/src/appsscript/slide/nonSlide.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSlide } from "./isSlide"; /** diff --git a/src/appsscript/slide/nonValidPresentationId.ts b/src/appsscript/slide/nonValidPresentationId.ts index cf09eb13..1ec3a0e4 100644 --- a/src/appsscript/slide/nonValidPresentationId.ts +++ b/src/appsscript/slide/nonValidPresentationId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidPresentationId } from "./isValidPresentationId"; /** diff --git a/src/appsscript/slide/nonValidSlideId.ts b/src/appsscript/slide/nonValidSlideId.ts index 3df5eec3..4909e405 100644 --- a/src/appsscript/slide/nonValidSlideId.ts +++ b/src/appsscript/slide/nonValidSlideId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidSlideId } from "./isValidSlideId"; /** diff --git a/src/appsscript/slide/requirePresentation.ts b/src/appsscript/slide/requirePresentation.ts index 1638d25e..d9be8f84 100644 --- a/src/appsscript/slide/requirePresentation.ts +++ b/src/appsscript/slide/requirePresentation.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidPresentationException } from "../../exception"; import { isPresentation } from "./isPresentation"; diff --git a/src/appsscript/slide/requireSlide.ts b/src/appsscript/slide/requireSlide.ts index d6860f51..282ff5a2 100644 --- a/src/appsscript/slide/requireSlide.ts +++ b/src/appsscript/slide/requireSlide.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { SlideNotFoundException } from "../../exception"; import { isSlide } from "./isSlide"; diff --git a/src/appsscript/slide/requireValidPresentationId.ts b/src/appsscript/slide/requireValidPresentationId.ts index e27e7f22..4f4a485d 100644 --- a/src/appsscript/slide/requireValidPresentationId.ts +++ b/src/appsscript/slide/requireValidPresentationId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidPresentationId } from "./isValidPresentationId"; diff --git a/src/appsscript/slide/requireValidSlideId.ts b/src/appsscript/slide/requireValidSlideId.ts index b870b58b..2497e8e9 100644 --- a/src/appsscript/slide/requireValidSlideId.ts +++ b/src/appsscript/slide/requireValidSlideId.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidSlideId } from "./isValidSlideId"; diff --git a/src/appsscript/ui/checkMultipleAccount.ts b/src/appsscript/ui/checkMultipleAccount.ts index c9b75b12..16c6fa03 100644 --- a/src/appsscript/ui/checkMultipleAccount.ts +++ b/src/appsscript/ui/checkMultipleAccount.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireValidEmail } from "../../lang"; /** diff --git a/src/appsscript/ui/index.ts b/src/appsscript/ui/index.ts index 7c89f232..603460bf 100644 --- a/src/appsscript/ui/index.ts +++ b/src/appsscript/ui/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./isHtmlOutput"; export * from "./isTextOutput"; diff --git a/src/appsscript/ui/isHtmlOutput.ts b/src/appsscript/ui/isHtmlOutput.ts index 510e084e..60d55f3b 100644 --- a/src/appsscript/ui/isHtmlOutput.ts +++ b/src/appsscript/ui/isHtmlOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFunction, isObject } from "../../lang"; type HtmlOutput = GoogleAppsScript.HTML.HtmlOutput; diff --git a/src/appsscript/ui/isTextOutput.ts b/src/appsscript/ui/isTextOutput.ts index 56fcb465..0da922ec 100644 --- a/src/appsscript/ui/isTextOutput.ts +++ b/src/appsscript/ui/isTextOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFunction, isObject } from "../../lang"; type TextOutput = GoogleAppsScript.Content.TextOutput; diff --git a/src/appsscript/ui/isUi.ts b/src/appsscript/ui/isUi.ts index 6d367849..98a35caa 100644 --- a/src/appsscript/ui/isUi.ts +++ b/src/appsscript/ui/isUi.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../../lang"; /** diff --git a/src/appsscript/ui/nonHtmlOutput.ts b/src/appsscript/ui/nonHtmlOutput.ts index f9731d7e..82d0df81 100644 --- a/src/appsscript/ui/nonHtmlOutput.ts +++ b/src/appsscript/ui/nonHtmlOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isHtmlOutput } from "./isHtmlOutput"; type HtmlOutput = GoogleAppsScript.HTML.HtmlOutput; diff --git a/src/appsscript/ui/nonTextOutput.ts b/src/appsscript/ui/nonTextOutput.ts index d07090f4..0370f11d 100644 --- a/src/appsscript/ui/nonTextOutput.ts +++ b/src/appsscript/ui/nonTextOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isTextOutput } from "./isTextOutput"; type TextOutput = GoogleAppsScript.Content.TextOutput; diff --git a/src/appsscript/ui/nonUi.ts b/src/appsscript/ui/nonUi.ts index ed2ae04b..7235453a 100644 --- a/src/appsscript/ui/nonUi.ts +++ b/src/appsscript/ui/nonUi.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isUi } from "./isUi"; /** diff --git a/src/appsscript/ui/requireHtmlOutput.ts b/src/appsscript/ui/requireHtmlOutput.ts index d700fbf6..e46ef1b7 100644 --- a/src/appsscript/ui/requireHtmlOutput.ts +++ b/src/appsscript/ui/requireHtmlOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isHtmlOutput } from "./isHtmlOutput"; diff --git a/src/appsscript/ui/requireTextOutput.ts b/src/appsscript/ui/requireTextOutput.ts index 02d4778b..90c9a9cc 100644 --- a/src/appsscript/ui/requireTextOutput.ts +++ b/src/appsscript/ui/requireTextOutput.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isTextOutput } from "./isTextOutput"; diff --git a/src/appsscript/ui/requireUi.ts b/src/appsscript/ui/requireUi.ts index aadebedf..d077fb85 100644 --- a/src/appsscript/ui/requireUi.ts +++ b/src/appsscript/ui/requireUi.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isUi } from "./isUi"; diff --git a/src/exception/AuthorizationException.ts b/src/exception/AuthorizationException.ts index 3e4cf7d0..fadafad9 100644 --- a/src/exception/AuthorizationException.ts +++ b/src/exception/AuthorizationException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/EmptyStringException.ts b/src/exception/EmptyStringException.ts index 6a86c964..16c71048 100644 --- a/src/exception/EmptyStringException.ts +++ b/src/exception/EmptyStringException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/Exception.ts b/src/exception/Exception.ts index 82c2403b..7a4d9529 100755 --- a/src/exception/Exception.ts +++ b/src/exception/Exception.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject, isString } from "../lang"; /** diff --git a/src/exception/IllegalArgumentException.ts b/src/exception/IllegalArgumentException.ts index 04b2ab61..02364ed3 100644 --- a/src/exception/IllegalArgumentException.ts +++ b/src/exception/IllegalArgumentException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/IllegalStateException.ts b/src/exception/IllegalStateException.ts index 7b737622..32d66e35 100644 --- a/src/exception/IllegalStateException.ts +++ b/src/exception/IllegalStateException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/InvalidEmailFormatException.ts b/src/exception/InvalidEmailFormatException.ts index 2fddb089..2ed9f42e 100644 --- a/src/exception/InvalidEmailFormatException.ts +++ b/src/exception/InvalidEmailFormatException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/InvalidStringException.ts b/src/exception/InvalidStringException.ts index 617b0d65..34c67df8 100644 --- a/src/exception/InvalidStringException.ts +++ b/src/exception/InvalidStringException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/NullPointerException.ts b/src/exception/NullPointerException.ts index e6b33ef4..4fa2260f 100644 --- a/src/exception/NullPointerException.ts +++ b/src/exception/NullPointerException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/RepositoryIsNotDefinedException.ts b/src/exception/RepositoryIsNotDefinedException.ts index c9cbda54..ec2ad2ba 100644 --- a/src/exception/RepositoryIsNotDefinedException.ts +++ b/src/exception/RepositoryIsNotDefinedException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/RuntimeException.ts b/src/exception/RuntimeException.ts index c01868b6..1983377e 100644 --- a/src/exception/RuntimeException.ts +++ b/src/exception/RuntimeException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { Exception } from "./Exception"; /** diff --git a/src/exception/ServiceIsNotDefinedException.ts b/src/exception/ServiceIsNotDefinedException.ts index 24757aaf..581d5d7b 100644 --- a/src/exception/ServiceIsNotDefinedException.ts +++ b/src/exception/ServiceIsNotDefinedException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "./RuntimeException"; /** diff --git a/src/exception/appsscript/admin/AdminDirectoryException.ts b/src/exception/appsscript/admin/AdminDirectoryException.ts index 15182c79..e1df5b3b 100644 --- a/src/exception/appsscript/admin/AdminDirectoryException.ts +++ b/src/exception/appsscript/admin/AdminDirectoryException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/admin/index.ts b/src/exception/appsscript/admin/index.ts index 946d88e8..118d10f4 100644 --- a/src/exception/appsscript/admin/index.ts +++ b/src/exception/appsscript/admin/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./AdminDirectoryException"; diff --git a/src/exception/appsscript/index.ts b/src/exception/appsscript/index.ts index 572fd82d..bcab8301 100644 --- a/src/exception/appsscript/index.ts +++ b/src/exception/appsscript/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./admin"; export * from "./sheet"; diff --git a/src/exception/appsscript/sheet/InvalidGridRangeException.ts b/src/exception/appsscript/sheet/InvalidGridRangeException.ts index aece9de2..ca5a5770 100644 --- a/src/exception/appsscript/sheet/InvalidGridRangeException.ts +++ b/src/exception/appsscript/sheet/InvalidGridRangeException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/sheet/InvalidRangeException.ts b/src/exception/appsscript/sheet/InvalidRangeException.ts index e6b4414b..ec119b44 100644 --- a/src/exception/appsscript/sheet/InvalidRangeException.ts +++ b/src/exception/appsscript/sheet/InvalidRangeException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/sheet/InvalidSheetException.ts b/src/exception/appsscript/sheet/InvalidSheetException.ts index d43e5fbe..eee5d27d 100644 --- a/src/exception/appsscript/sheet/InvalidSheetException.ts +++ b/src/exception/appsscript/sheet/InvalidSheetException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/sheet/InvalidSpreadsheetException.ts b/src/exception/appsscript/sheet/InvalidSpreadsheetException.ts index 8d7fbae9..2bfb968b 100644 --- a/src/exception/appsscript/sheet/InvalidSpreadsheetException.ts +++ b/src/exception/appsscript/sheet/InvalidSpreadsheetException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/sheet/index.ts b/src/exception/appsscript/sheet/index.ts index cb9180b3..a69f72e4 100644 --- a/src/exception/appsscript/sheet/index.ts +++ b/src/exception/appsscript/sheet/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./InvalidGridRangeException"; export * from "./InvalidRangeException"; diff --git a/src/exception/appsscript/slide/InvalidPresentationException.ts b/src/exception/appsscript/slide/InvalidPresentationException.ts index f619c4f6..fca74622 100644 --- a/src/exception/appsscript/slide/InvalidPresentationException.ts +++ b/src/exception/appsscript/slide/InvalidPresentationException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/slide/SlideNotFoundException.ts b/src/exception/appsscript/slide/SlideNotFoundException.ts index 9882dc23..3c17ae59 100644 --- a/src/exception/appsscript/slide/SlideNotFoundException.ts +++ b/src/exception/appsscript/slide/SlideNotFoundException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../../RuntimeException"; /** diff --git a/src/exception/appsscript/slide/index.ts b/src/exception/appsscript/slide/index.ts index 37b84c82..2dd45736 100644 --- a/src/exception/appsscript/slide/index.ts +++ b/src/exception/appsscript/slide/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./InvalidPresentationException"; export * from "./SlideNotFoundException"; diff --git a/src/exception/index.ts b/src/exception/index.ts index 8a7b9174..9784f578 100644 --- a/src/exception/index.ts +++ b/src/exception/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./appsscript"; export * from "./net"; diff --git a/src/exception/net/AuthenticationException.ts b/src/exception/net/AuthenticationException.ts index 2d79b31d..d2b2ac23 100644 --- a/src/exception/net/AuthenticationException.ts +++ b/src/exception/net/AuthenticationException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { RuntimeException } from "../RuntimeException"; /** diff --git a/src/exception/net/index.ts b/src/exception/net/index.ts index b4c61e69..71baa120 100644 --- a/src/exception/net/index.ts +++ b/src/exception/net/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./AuthenticationException"; diff --git a/src/html/decodeHtml.ts b/src/html/decodeHtml.ts index 425aa5e7..429da16e 100755 --- a/src/html/decodeHtml.ts +++ b/src/html/decodeHtml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../lang"; /** diff --git a/src/html/encodeHtml.ts b/src/html/encodeHtml.ts index e7f4791b..2cd8dfad 100755 --- a/src/html/encodeHtml.ts +++ b/src/html/encodeHtml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../lang"; /** diff --git a/src/html/escapeHtml.ts b/src/html/escapeHtml.ts index b2e16396..ef2dad55 100755 --- a/src/html/escapeHtml.ts +++ b/src/html/escapeHtml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../lang"; /** diff --git a/src/html/escapeXml.ts b/src/html/escapeXml.ts index 39bf8fa0..be92fea0 100755 --- a/src/html/escapeXml.ts +++ b/src/html/escapeXml.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../lang"; /** diff --git a/src/html/index.ts b/src/html/index.ts index 44b3983f..aba83240 100644 --- a/src/html/index.ts +++ b/src/html/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./decodeHtml"; export * from "./encodeHtml"; diff --git a/src/index.ts b/src/index.ts index 06f97532..0061ceec 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./exception"; export * from "./appsscript"; diff --git a/src/json/index.ts b/src/json/index.ts index e4d19989..95fbdc4e 100644 --- a/src/json/index.ts +++ b/src/json/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./parseJson"; export * from "./stringifyJson"; diff --git a/src/json/parseJson.ts b/src/json/parseJson.ts index 206162e5..e886476b 100644 --- a/src/json/parseJson.ts +++ b/src/json/parseJson.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../lang"; /** diff --git a/src/json/stringifyJson.ts b/src/json/stringifyJson.ts index d21b71a8..345586b4 100644 --- a/src/json/stringifyJson.ts +++ b/src/json/stringifyJson.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "../lang"; /** diff --git a/src/lang/Class.ts b/src/lang/Class.ts index 3df195fd..4485fb5e 100644 --- a/src/lang/Class.ts +++ b/src/lang/Class.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { hashCode } from "./index"; /** diff --git a/src/lang/Iterator.ts b/src/lang/Iterator.ts index cbab814b..9eda8342 100755 --- a/src/lang/Iterator.ts +++ b/src/lang/Iterator.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Interface for navigating through a collection, where backward navigation is optional. * diff --git a/src/lang/array/chunk.ts b/src/lang/array/chunk.ts index ff3448d3..9f10feac 100644 --- a/src/lang/array/chunk.ts +++ b/src/lang/array/chunk.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; import { isInteger } from "../number"; diff --git a/src/lang/array/compact.ts b/src/lang/array/compact.ts index eb084786..0d7b27b8 100644 --- a/src/lang/array/compact.ts +++ b/src/lang/array/compact.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; /** diff --git a/src/lang/array/first.ts b/src/lang/array/first.ts index 98d04548..b37a6f96 100644 --- a/src/lang/array/first.ts +++ b/src/lang/array/first.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; import { isInteger } from "../number"; diff --git a/src/lang/array/index.ts b/src/lang/array/index.ts index dfed7f36..fcf2c4ac 100644 --- a/src/lang/array/index.ts +++ b/src/lang/array/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./is2DArray"; export * from "./isConsistent2DArray"; diff --git a/src/lang/array/intersect.ts b/src/lang/array/intersect.ts index 7ee8cc63..1979ec14 100644 --- a/src/lang/array/intersect.ts +++ b/src/lang/array/intersect.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; /** diff --git a/src/lang/array/is2DArray.ts b/src/lang/array/is2DArray.ts index f42f5401..9063077a 100644 --- a/src/lang/array/is2DArray.ts +++ b/src/lang/array/is2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray, isEmpty } from "../base"; /** diff --git a/src/lang/array/isConsistent2DArray.ts b/src/lang/array/isConsistent2DArray.ts index f841a0d2..71eaa735 100644 --- a/src/lang/array/isConsistent2DArray.ts +++ b/src/lang/array/isConsistent2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { is2DArray } from "./is2DArray"; /** diff --git a/src/lang/array/last.ts b/src/lang/array/last.ts index 8764acbc..36c55990 100644 --- a/src/lang/array/last.ts +++ b/src/lang/array/last.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; import { isInteger } from "../number"; diff --git a/src/lang/array/non2DArray.ts b/src/lang/array/non2DArray.ts index 15b40c81..73d16ae0 100644 --- a/src/lang/array/non2DArray.ts +++ b/src/lang/array/non2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { is2DArray } from "./is2DArray"; /** diff --git a/src/lang/array/nonConsistent2DArray.ts b/src/lang/array/nonConsistent2DArray.ts index e565f605..c87bf8bf 100644 --- a/src/lang/array/nonConsistent2DArray.ts +++ b/src/lang/array/nonConsistent2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isConsistent2DArray } from "./isConsistent2DArray"; /** diff --git a/src/lang/array/require2DArray.ts b/src/lang/array/require2DArray.ts index 64f2fee6..702c9d75 100644 --- a/src/lang/array/require2DArray.ts +++ b/src/lang/array/require2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { is2DArray } from "./is2DArray"; diff --git a/src/lang/array/requireConsistent2DArray.ts b/src/lang/array/requireConsistent2DArray.ts index 1e565f3c..854b93b1 100644 --- a/src/lang/array/requireConsistent2DArray.ts +++ b/src/lang/array/requireConsistent2DArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { is2DArray } from "./is2DArray"; diff --git a/src/lang/array/requireNoNilElements.ts b/src/lang/array/requireNoNilElements.ts index a66df076..cdfbd7d8 100644 --- a/src/lang/array/requireNoNilElements.ts +++ b/src/lang/array/requireNoNilElements.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil } from "../base"; diff --git a/src/lang/array/transpose.ts b/src/lang/array/transpose.ts index a57ed428..6aeb99ea 100644 --- a/src/lang/array/transpose.ts +++ b/src/lang/array/transpose.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isConsistent2DArray } from "../array"; import { isArray } from "../base"; diff --git a/src/lang/array/unique.ts b/src/lang/array/unique.ts index c2483412..9dfc7f0c 100644 --- a/src/lang/array/unique.ts +++ b/src/lang/array/unique.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; /** diff --git a/src/lang/array/without.ts b/src/lang/array/without.ts index 44fd9b66..b848a048 100644 --- a/src/lang/array/without.ts +++ b/src/lang/array/without.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "../base"; /** diff --git a/src/lang/base/index.ts b/src/lang/base/index.ts index 2f3a3b37..8efa1c1d 100644 --- a/src/lang/base/index.ts +++ b/src/lang/base/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./isArray"; export * from "./isBoolean"; diff --git a/src/lang/base/isArray.ts b/src/lang/base/isArray.ts index 1f3571b7..e5e84390 100644 --- a/src/lang/base/isArray.ts +++ b/src/lang/base/isArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is an `Array`. * diff --git a/src/lang/base/isBoolean.ts b/src/lang/base/isBoolean.ts index 4f0cbf60..81fcb70e 100644 --- a/src/lang/base/isBoolean.ts +++ b/src/lang/base/isBoolean.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is a boolean. * diff --git a/src/lang/base/isEmpty.ts b/src/lang/base/isEmpty.ts index 6845308c..28fb2354 100644 --- a/src/lang/base/isEmpty.ts +++ b/src/lang/base/isEmpty.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; import { objectToString } from "../object"; import { isNil } from "./isNil"; diff --git a/src/lang/base/isException.ts b/src/lang/base/isException.ts index 40d00302..ef57b3d8 100644 --- a/src/lang/base/isException.ts +++ b/src/lang/base/isException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { Exception } from "../../exception"; import { isObject } from "./isObject"; diff --git a/src/lang/base/isFunction.ts b/src/lang/base/isFunction.ts index 1372dbb9..b2a30a75 100644 --- a/src/lang/base/isFunction.ts +++ b/src/lang/base/isFunction.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { ObjectTag, objectToString } from "../object"; import { isNil } from "./isNil"; diff --git a/src/lang/base/isFunctionLike.ts b/src/lang/base/isFunctionLike.ts index 4aa36628..ce8ecd4d 100644 --- a/src/lang/base/isFunctionLike.ts +++ b/src/lang/base/isFunctionLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { nonNil } from "./nonNil"; /** diff --git a/src/lang/base/isLength.ts b/src/lang/base/isLength.ts index 2b1e1cf8..6aa23780 100644 --- a/src/lang/base/isLength.ts +++ b/src/lang/base/isLength.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "./isNumber"; /** diff --git a/src/lang/base/isNil.ts b/src/lang/base/isNil.ts index b6f15622..a69892d1 100644 --- a/src/lang/base/isNil.ts +++ b/src/lang/base/isNil.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNull } from "./isNull"; import { isUndefined } from "./isUndefined"; diff --git a/src/lang/base/isNull.ts b/src/lang/base/isNull.ts index c0fb6e26..53725221 100644 --- a/src/lang/base/isNull.ts +++ b/src/lang/base/isNull.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is `null`. * diff --git a/src/lang/base/isNumber.ts b/src/lang/base/isNumber.ts index 357fe6e6..dfb74b48 100644 --- a/src/lang/base/isNumber.ts +++ b/src/lang/base/isNumber.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is a number. * diff --git a/src/lang/base/isNumberLike.ts b/src/lang/base/isNumberLike.ts index 9d496cbd..1f5f3d7e 100644 --- a/src/lang/base/isNumberLike.ts +++ b/src/lang/base/isNumberLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "./isNumber"; import { isString } from "./isString"; diff --git a/src/lang/base/isObject.ts b/src/lang/base/isObject.ts index 3efa4df9..cab163d5 100644 --- a/src/lang/base/isObject.ts +++ b/src/lang/base/isObject.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { nonNil } from "./nonNil"; /** diff --git a/src/lang/base/isObjectLike.ts b/src/lang/base/isObjectLike.ts index 8e89326c..e195d929 100644 --- a/src/lang/base/isObjectLike.ts +++ b/src/lang/base/isObjectLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFunction } from "./isFunction"; import { nonNil } from "./nonNil"; diff --git a/src/lang/base/isRegExp.ts b/src/lang/base/isRegExp.ts index 4cb3d01d..6cea147e 100644 --- a/src/lang/base/isRegExp.ts +++ b/src/lang/base/isRegExp.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { ObjectTag, objectToString } from "../object"; /** diff --git a/src/lang/base/isScalar.ts b/src/lang/base/isScalar.ts index 6268a205..13016a81 100644 --- a/src/lang/base/isScalar.ts +++ b/src/lang/base/isScalar.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is a scalar type (`string`, `number`, `boolean`, `symbol`, or `bigint`). * diff --git a/src/lang/base/isString.ts b/src/lang/base/isString.ts index 2c49a564..fd31d132 100644 --- a/src/lang/base/isString.ts +++ b/src/lang/base/isString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is a string. * diff --git a/src/lang/base/isSymbol.ts b/src/lang/base/isSymbol.ts index d12367e1..ccb295d7 100644 --- a/src/lang/base/isSymbol.ts +++ b/src/lang/base/isSymbol.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is a `Symbol`. * diff --git a/src/lang/base/isUndefined.ts b/src/lang/base/isUndefined.ts index 395d3873..46fb0547 100644 --- a/src/lang/base/isUndefined.ts +++ b/src/lang/base/isUndefined.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is `undefined`. * diff --git a/src/lang/base/nonArray.ts b/src/lang/base/nonArray.ts index fb1cec71..e7fd1d95 100644 --- a/src/lang/base/nonArray.ts +++ b/src/lang/base/nonArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isArray } from "./isArray"; /** diff --git a/src/lang/base/nonBoolean.ts b/src/lang/base/nonBoolean.ts index 4da7f5e6..2858bb48 100644 --- a/src/lang/base/nonBoolean.ts +++ b/src/lang/base/nonBoolean.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isBoolean } from "./isBoolean"; /** diff --git a/src/lang/base/nonEmpty.ts b/src/lang/base/nonEmpty.ts index 85a9bcf0..32955c3a 100644 --- a/src/lang/base/nonEmpty.ts +++ b/src/lang/base/nonEmpty.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty } from "./isEmpty"; /** diff --git a/src/lang/base/nonException.ts b/src/lang/base/nonException.ts index e31128de..45932e9c 100644 --- a/src/lang/base/nonException.ts +++ b/src/lang/base/nonException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { Exception } from "../../exception"; import { isException } from "./isException"; diff --git a/src/lang/base/nonFunction.ts b/src/lang/base/nonFunction.ts index 840fa137..8aff2603 100644 --- a/src/lang/base/nonFunction.ts +++ b/src/lang/base/nonFunction.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Checks if the provided value is NOT `function`. * diff --git a/src/lang/base/nonFunctionLike.ts b/src/lang/base/nonFunctionLike.ts index ea44bce4..858650ee 100644 --- a/src/lang/base/nonFunctionLike.ts +++ b/src/lang/base/nonFunctionLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFunctionLike } from "./isFunctionLike"; /** diff --git a/src/lang/base/nonLength.ts b/src/lang/base/nonLength.ts index a9285696..13f2ca67 100644 --- a/src/lang/base/nonLength.ts +++ b/src/lang/base/nonLength.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isLength } from "./isLength"; /** diff --git a/src/lang/base/nonNil.ts b/src/lang/base/nonNil.ts index e72f074d..3de0c716 100644 --- a/src/lang/base/nonNil.ts +++ b/src/lang/base/nonNil.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil } from "./isNil"; /** diff --git a/src/lang/base/nonNull.ts b/src/lang/base/nonNull.ts index ecdf4d7a..7ebc0265 100644 --- a/src/lang/base/nonNull.ts +++ b/src/lang/base/nonNull.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNull } from "./isNull"; /** diff --git a/src/lang/base/nonNumber.ts b/src/lang/base/nonNumber.ts index 3a277820..6fa18c4c 100644 --- a/src/lang/base/nonNumber.ts +++ b/src/lang/base/nonNumber.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "./isNumber"; /** diff --git a/src/lang/base/nonNumberLike.ts b/src/lang/base/nonNumberLike.ts index c982da23..8c11ddc0 100644 --- a/src/lang/base/nonNumberLike.ts +++ b/src/lang/base/nonNumberLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumberLike } from "./isNumberLike"; /** diff --git a/src/lang/base/nonObject.ts b/src/lang/base/nonObject.ts index 3f1bbd8d..555055f6 100644 --- a/src/lang/base/nonObject.ts +++ b/src/lang/base/nonObject.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObject } from "./isObject"; /** diff --git a/src/lang/base/nonObjectLike.ts b/src/lang/base/nonObjectLike.ts index 9808ae0c..05003e96 100644 --- a/src/lang/base/nonObjectLike.ts +++ b/src/lang/base/nonObjectLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isObjectLike } from "./isObjectLike"; /** diff --git a/src/lang/base/nonRegExp.ts b/src/lang/base/nonRegExp.ts index 47cb09c8..2f7dc4f4 100644 --- a/src/lang/base/nonRegExp.ts +++ b/src/lang/base/nonRegExp.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isRegExp } from "./isRegExp"; /** diff --git a/src/lang/base/nonScalar.ts b/src/lang/base/nonScalar.ts index 2243e7ab..0b77acfd 100644 --- a/src/lang/base/nonScalar.ts +++ b/src/lang/base/nonScalar.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isScalar } from "./isScalar"; /** diff --git a/src/lang/base/nonString.ts b/src/lang/base/nonString.ts index 0a75787e..e72ce523 100644 --- a/src/lang/base/nonString.ts +++ b/src/lang/base/nonString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "./isString"; /** diff --git a/src/lang/base/nonSymbol.ts b/src/lang/base/nonSymbol.ts index 34094d68..a6220373 100644 --- a/src/lang/base/nonSymbol.ts +++ b/src/lang/base/nonSymbol.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSymbol } from "./isSymbol"; /** diff --git a/src/lang/base/nonUndefined.ts b/src/lang/base/nonUndefined.ts index f0a4c611..01b9d91c 100644 --- a/src/lang/base/nonUndefined.ts +++ b/src/lang/base/nonUndefined.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isUndefined } from "./isUndefined"; /** diff --git a/src/lang/base/requireArray.ts b/src/lang/base/requireArray.ts index a7e45348..d75efdf9 100644 --- a/src/lang/base/requireArray.ts +++ b/src/lang/base/requireArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isArray } from "./isArray"; diff --git a/src/lang/base/requireBoolean.ts b/src/lang/base/requireBoolean.ts index 253d3ca1..4352584c 100644 --- a/src/lang/base/requireBoolean.ts +++ b/src/lang/base/requireBoolean.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isBoolean } from "./isBoolean"; diff --git a/src/lang/base/requireEmpty.ts b/src/lang/base/requireEmpty.ts index c0f07f8c..de66827c 100644 --- a/src/lang/base/requireEmpty.ts +++ b/src/lang/base/requireEmpty.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isEmpty } from "./isEmpty"; diff --git a/src/lang/base/requireException.ts b/src/lang/base/requireException.ts index 7875bf41..215e2987 100644 --- a/src/lang/base/requireException.ts +++ b/src/lang/base/requireException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { Exception, IllegalArgumentException } from "../../exception"; import { isException } from "./isException"; diff --git a/src/lang/base/requireFunction.ts b/src/lang/base/requireFunction.ts index c3568059..7dc42b17 100644 --- a/src/lang/base/requireFunction.ts +++ b/src/lang/base/requireFunction.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFunction } from "./isFunction"; diff --git a/src/lang/base/requireFunctionLike.ts b/src/lang/base/requireFunctionLike.ts index 1489bc5c..de287d79 100644 --- a/src/lang/base/requireFunctionLike.ts +++ b/src/lang/base/requireFunctionLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFunctionLike } from "./isFunctionLike"; diff --git a/src/lang/base/requireLength.ts b/src/lang/base/requireLength.ts index 8e5cbfa6..e6b7923d 100644 --- a/src/lang/base/requireLength.ts +++ b/src/lang/base/requireLength.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isLength } from "./isLength"; diff --git a/src/lang/base/requireNil.ts b/src/lang/base/requireNil.ts index 1b46a27f..c3789bb1 100644 --- a/src/lang/base/requireNil.ts +++ b/src/lang/base/requireNil.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil } from "./isNil"; diff --git a/src/lang/base/requireNonArray.ts b/src/lang/base/requireNonArray.ts index ecd0c06a..a844fb05 100644 --- a/src/lang/base/requireNonArray.ts +++ b/src/lang/base/requireNonArray.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isArray } from "./isArray"; diff --git a/src/lang/base/requireNonBoolean.ts b/src/lang/base/requireNonBoolean.ts index 3bd02c53..72accc1f 100644 --- a/src/lang/base/requireNonBoolean.ts +++ b/src/lang/base/requireNonBoolean.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isBoolean } from "./isBoolean"; diff --git a/src/lang/base/requireNonEmpty.ts b/src/lang/base/requireNonEmpty.ts index 656a9347..e141fb9f 100644 --- a/src/lang/base/requireNonEmpty.ts +++ b/src/lang/base/requireNonEmpty.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isEmpty } from "./isEmpty"; diff --git a/src/lang/base/requireNonException.ts b/src/lang/base/requireNonException.ts index 3b04f5bb..d4286fa9 100644 --- a/src/lang/base/requireNonException.ts +++ b/src/lang/base/requireNonException.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { Exception, IllegalArgumentException } from "../../exception"; import { isException } from "./isException"; diff --git a/src/lang/base/requireNonFunction.ts b/src/lang/base/requireNonFunction.ts index 00975e7b..6c1d1785 100644 --- a/src/lang/base/requireNonFunction.ts +++ b/src/lang/base/requireNonFunction.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { nonFunction } from "./nonFunction"; diff --git a/src/lang/base/requireNonFunctionLike.ts b/src/lang/base/requireNonFunctionLike.ts index 325f8124..d8fb4aeb 100644 --- a/src/lang/base/requireNonFunctionLike.ts +++ b/src/lang/base/requireNonFunctionLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFunctionLike } from "./isFunctionLike"; diff --git a/src/lang/base/requireNonLength.ts b/src/lang/base/requireNonLength.ts index 8d47375a..30d281e8 100644 --- a/src/lang/base/requireNonLength.ts +++ b/src/lang/base/requireNonLength.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isLength } from "./isLength"; diff --git a/src/lang/base/requireNonNil.ts b/src/lang/base/requireNonNil.ts index 0065daaf..902f4b84 100644 --- a/src/lang/base/requireNonNil.ts +++ b/src/lang/base/requireNonNil.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil } from "./isNil"; diff --git a/src/lang/base/requireNonNull.ts b/src/lang/base/requireNonNull.ts index 5450686c..85f4f6dc 100644 --- a/src/lang/base/requireNonNull.ts +++ b/src/lang/base/requireNonNull.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { NullPointerException } from "../../exception"; import { isNil } from "./isNil"; diff --git a/src/lang/base/requireNonNumber.ts b/src/lang/base/requireNonNumber.ts index ef168a4d..fce58b50 100644 --- a/src/lang/base/requireNonNumber.ts +++ b/src/lang/base/requireNonNumber.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNumber } from "./isNumber"; diff --git a/src/lang/base/requireNonNumberLike.ts b/src/lang/base/requireNonNumberLike.ts index e5d617ee..c42c1b98 100644 --- a/src/lang/base/requireNonNumberLike.ts +++ b/src/lang/base/requireNonNumberLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNumberLike } from "./isNumberLike"; diff --git a/src/lang/base/requireNonObject.ts b/src/lang/base/requireNonObject.ts index de4db6d5..a2b0ea0e 100644 --- a/src/lang/base/requireNonObject.ts +++ b/src/lang/base/requireNonObject.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObject } from "./isObject"; diff --git a/src/lang/base/requireNonObjectLike.ts b/src/lang/base/requireNonObjectLike.ts index a884a81e..7a4beb82 100644 --- a/src/lang/base/requireNonObjectLike.ts +++ b/src/lang/base/requireNonObjectLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObjectLike } from "./isObjectLike"; diff --git a/src/lang/base/requireNonRegExp.ts b/src/lang/base/requireNonRegExp.ts index 7fca0a21..137c6257 100644 --- a/src/lang/base/requireNonRegExp.ts +++ b/src/lang/base/requireNonRegExp.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isRegExp } from "./isRegExp"; diff --git a/src/lang/base/requireNonScalar.ts b/src/lang/base/requireNonScalar.ts index c1a7f33b..47c2fe48 100644 --- a/src/lang/base/requireNonScalar.ts +++ b/src/lang/base/requireNonScalar.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isScalar } from "./isScalar"; diff --git a/src/lang/base/requireNonString.ts b/src/lang/base/requireNonString.ts index dddc4908..fc0b121c 100644 --- a/src/lang/base/requireNonString.ts +++ b/src/lang/base/requireNonString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isString } from "./isString"; diff --git a/src/lang/base/requireNonSymbol.ts b/src/lang/base/requireNonSymbol.ts index 230f2978..1df5754a 100644 --- a/src/lang/base/requireNonSymbol.ts +++ b/src/lang/base/requireNonSymbol.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isSymbol } from "./isSymbol"; diff --git a/src/lang/base/requireNonUndefined.ts b/src/lang/base/requireNonUndefined.ts index 3be32557..6e48ef90 100644 --- a/src/lang/base/requireNonUndefined.ts +++ b/src/lang/base/requireNonUndefined.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isUndefined } from "./isUndefined"; diff --git a/src/lang/base/requireNull.ts b/src/lang/base/requireNull.ts index 3e37416d..6e2374a7 100644 --- a/src/lang/base/requireNull.ts +++ b/src/lang/base/requireNull.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNull } from "./isNull"; diff --git a/src/lang/base/requireNumber.ts b/src/lang/base/requireNumber.ts index 7827ba7a..b1c6ee2e 100644 --- a/src/lang/base/requireNumber.ts +++ b/src/lang/base/requireNumber.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNumber } from "./isNumber"; diff --git a/src/lang/base/requireNumberLike.ts b/src/lang/base/requireNumberLike.ts index 56cf9969..01e4b34b 100644 --- a/src/lang/base/requireNumberLike.ts +++ b/src/lang/base/requireNumberLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNumberLike } from "./isNumberLike"; diff --git a/src/lang/base/requireObject.ts b/src/lang/base/requireObject.ts index 98061401..56486b0f 100644 --- a/src/lang/base/requireObject.ts +++ b/src/lang/base/requireObject.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObject } from "./isObject"; diff --git a/src/lang/base/requireObjectLike.ts b/src/lang/base/requireObjectLike.ts index 54b52b47..c8c3b83d 100644 --- a/src/lang/base/requireObjectLike.ts +++ b/src/lang/base/requireObjectLike.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isObjectLike } from "./isObjectLike"; diff --git a/src/lang/base/requireRegExp.ts b/src/lang/base/requireRegExp.ts index c7671b27..fd7e1eca 100644 --- a/src/lang/base/requireRegExp.ts +++ b/src/lang/base/requireRegExp.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isRegExp } from "./isRegExp"; diff --git a/src/lang/base/requireScalar.ts b/src/lang/base/requireScalar.ts index 5eb28ef1..570a02b0 100644 --- a/src/lang/base/requireScalar.ts +++ b/src/lang/base/requireScalar.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isScalar } from "./isScalar"; diff --git a/src/lang/base/requireState.ts b/src/lang/base/requireState.ts index be49fd48..980439f6 100644 --- a/src/lang/base/requireState.ts +++ b/src/lang/base/requireState.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalStateException } from "../../exception"; /** diff --git a/src/lang/base/requireString.ts b/src/lang/base/requireString.ts index ebff1d24..7752b8ac 100644 --- a/src/lang/base/requireString.ts +++ b/src/lang/base/requireString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidStringException } from "../../exception"; import { nonString } from "./nonString"; diff --git a/src/lang/base/requireSymbol.ts b/src/lang/base/requireSymbol.ts index 7a25a444..85d1f1aa 100644 --- a/src/lang/base/requireSymbol.ts +++ b/src/lang/base/requireSymbol.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isSymbol } from "./isSymbol"; diff --git a/src/lang/base/requireUndefined.ts b/src/lang/base/requireUndefined.ts index efa0820a..9f093608 100644 --- a/src/lang/base/requireUndefined.ts +++ b/src/lang/base/requireUndefined.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isUndefined } from "./isUndefined"; diff --git a/src/lang/function/index.ts b/src/lang/function/index.ts index f83e857c..084c120a 100644 --- a/src/lang/function/index.ts +++ b/src/lang/function/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./retry"; diff --git a/src/lang/function/retry.ts b/src/lang/function/retry.ts index 967d4c95..d43a8b5c 100644 --- a/src/lang/function/retry.ts +++ b/src/lang/function/retry.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFunction } from "../base"; diff --git a/src/lang/index.ts b/src/lang/index.ts index b1bb01f2..641c5cdf 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./base"; export * from "./array"; diff --git a/src/lang/number/index.ts b/src/lang/number/index.ts index 7d0e2d33..6b843b86 100644 --- a/src/lang/number/index.ts +++ b/src/lang/number/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./isDouble"; export * from "./isFloat"; diff --git a/src/lang/number/isCountable.ts b/src/lang/number/isCountable.ts index 85311fe6..3cbd8a58 100644 --- a/src/lang/number/isCountable.ts +++ b/src/lang/number/isCountable.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNonNegative } from "./isNonNegative"; /** diff --git a/src/lang/number/isDouble.ts b/src/lang/number/isDouble.ts index 1804d7fa..16a11935 100644 --- a/src/lang/number/isDouble.ts +++ b/src/lang/number/isDouble.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFloat } from "./isFloat"; /** diff --git a/src/lang/number/isFloat.ts b/src/lang/number/isFloat.ts index 57d69dbf..adb0e7e3 100644 --- a/src/lang/number/isFloat.ts +++ b/src/lang/number/isFloat.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "../base"; /** diff --git a/src/lang/number/isInteger.ts b/src/lang/number/isInteger.ts index f287029f..dc87b3f7 100644 --- a/src/lang/number/isInteger.ts +++ b/src/lang/number/isInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "../base"; /** diff --git a/src/lang/number/isNaN.ts b/src/lang/number/isNaN.ts index dad49295..b11158d6 100644 --- a/src/lang/number/isNaN.ts +++ b/src/lang/number/isNaN.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "../base"; /** diff --git a/src/lang/number/isNonNegative.ts b/src/lang/number/isNonNegative.ts index 23a56c47..5f970dcb 100644 --- a/src/lang/number/isNonNegative.ts +++ b/src/lang/number/isNonNegative.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "../base"; /** diff --git a/src/lang/number/isSafeInteger.ts b/src/lang/number/isSafeInteger.ts index 42348696..7b99e993 100644 --- a/src/lang/number/isSafeInteger.ts +++ b/src/lang/number/isSafeInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNumber } from "../base"; /** diff --git a/src/lang/number/nonCountable.ts b/src/lang/number/nonCountable.ts index 4e688557..7fb20ac2 100644 --- a/src/lang/number/nonCountable.ts +++ b/src/lang/number/nonCountable.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isCountable } from "./isCountable"; /** diff --git a/src/lang/number/nonDouble.ts b/src/lang/number/nonDouble.ts index 32c6c588..5096b4dc 100644 --- a/src/lang/number/nonDouble.ts +++ b/src/lang/number/nonDouble.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isDouble } from "./isDouble"; /** diff --git a/src/lang/number/nonFloat.ts b/src/lang/number/nonFloat.ts index 5f853385..4775a6e9 100644 --- a/src/lang/number/nonFloat.ts +++ b/src/lang/number/nonFloat.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isFloat } from "./isFloat"; /** diff --git a/src/lang/number/nonInteger.ts b/src/lang/number/nonInteger.ts index df393dea..20c48314 100644 --- a/src/lang/number/nonInteger.ts +++ b/src/lang/number/nonInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isInteger } from "./isInteger"; /** diff --git a/src/lang/number/nonNaN.ts b/src/lang/number/nonNaN.ts index d4e4325c..af1beff0 100644 --- a/src/lang/number/nonNaN.ts +++ b/src/lang/number/nonNaN.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNaN } from "./isNaN"; /** diff --git a/src/lang/number/nonNegative.ts b/src/lang/number/nonNegative.ts index 46b99c9c..c1bc4582 100644 --- a/src/lang/number/nonNegative.ts +++ b/src/lang/number/nonNegative.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNonNegative } from "./isNonNegative"; /** diff --git a/src/lang/number/nonSafeInteger.ts b/src/lang/number/nonSafeInteger.ts index ccddf672..8f07b84d 100644 --- a/src/lang/number/nonSafeInteger.ts +++ b/src/lang/number/nonSafeInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isSafeInteger } from "./isSafeInteger"; /** diff --git a/src/lang/number/requireCountable.ts b/src/lang/number/requireCountable.ts index f5620902..29503f62 100644 --- a/src/lang/number/requireCountable.ts +++ b/src/lang/number/requireCountable.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isCountable } from "./isCountable"; diff --git a/src/lang/number/requireDouble.ts b/src/lang/number/requireDouble.ts index 33ebab17..2ae74306 100644 --- a/src/lang/number/requireDouble.ts +++ b/src/lang/number/requireDouble.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isDouble } from "./isDouble"; diff --git a/src/lang/number/requireFloat.ts b/src/lang/number/requireFloat.ts index fc7d6a22..588b5cf1 100644 --- a/src/lang/number/requireFloat.ts +++ b/src/lang/number/requireFloat.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFloat } from "./isFloat"; diff --git a/src/lang/number/requireInteger.ts b/src/lang/number/requireInteger.ts index c8435ac4..0b1fae18 100644 --- a/src/lang/number/requireInteger.ts +++ b/src/lang/number/requireInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isInteger } from "./isInteger"; diff --git a/src/lang/number/requireNaN.ts b/src/lang/number/requireNaN.ts index cacf4f57..7b070c5a 100644 --- a/src/lang/number/requireNaN.ts +++ b/src/lang/number/requireNaN.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNaN } from "./isNaN"; diff --git a/src/lang/number/requireNonDouble.ts b/src/lang/number/requireNonDouble.ts index 30486e43..de03c9ff 100644 --- a/src/lang/number/requireNonDouble.ts +++ b/src/lang/number/requireNonDouble.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isDouble } from "./isDouble"; diff --git a/src/lang/number/requireNonFloat.ts b/src/lang/number/requireNonFloat.ts index 3f6d670c..3886a452 100644 --- a/src/lang/number/requireNonFloat.ts +++ b/src/lang/number/requireNonFloat.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isFloat } from "./isFloat"; diff --git a/src/lang/number/requireNonInteger.ts b/src/lang/number/requireNonInteger.ts index 2a8f6dd4..b465b5ba 100644 --- a/src/lang/number/requireNonInteger.ts +++ b/src/lang/number/requireNonInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isInteger } from "./isInteger"; diff --git a/src/lang/number/requireNonNaN.ts b/src/lang/number/requireNonNaN.ts index bf29a144..16754908 100644 --- a/src/lang/number/requireNonNaN.ts +++ b/src/lang/number/requireNonNaN.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNaN } from "./isNaN"; diff --git a/src/lang/number/requireNonSafeInteger.ts b/src/lang/number/requireNonSafeInteger.ts index f603a51e..2255107d 100644 --- a/src/lang/number/requireNonSafeInteger.ts +++ b/src/lang/number/requireNonSafeInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isSafeInteger } from "./isSafeInteger"; diff --git a/src/lang/number/requireSafeInteger.ts b/src/lang/number/requireSafeInteger.ts index 7bfe01a3..c0c29490 100644 --- a/src/lang/number/requireSafeInteger.ts +++ b/src/lang/number/requireSafeInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isSafeInteger } from "./isSafeInteger"; diff --git a/src/lang/number/toInteger.ts b/src/lang/number/toInteger.ts index 754b3229..8cf361ea 100644 --- a/src/lang/number/toInteger.ts +++ b/src/lang/number/toInteger.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isNil, isNumber, isString } from "../base"; /** diff --git a/src/lang/object/ObjectTag.ts b/src/lang/object/ObjectTag.ts index aeefb75b..5fdff4c3 100644 --- a/src/lang/object/ObjectTag.ts +++ b/src/lang/object/ObjectTag.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Enum representing `Object#toString` result references in uppercase. * Provides a standardized way to identify object types. diff --git a/src/lang/object/equals.ts b/src/lang/object/equals.ts index 7e9af498..65090305 100644 --- a/src/lang/object/equals.ts +++ b/src/lang/object/equals.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil } from "../base"; import { objectToString } from "./objectToString"; diff --git a/src/lang/object/flat.ts b/src/lang/object/flat.ts index 4b071eab..8ad7f8fd 100644 --- a/src/lang/object/flat.ts +++ b/src/lang/object/flat.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil } from "../base"; diff --git a/src/lang/object/getPath.ts b/src/lang/object/getPath.ts index 3136fc3e..23ab4db2 100644 --- a/src/lang/object/getPath.ts +++ b/src/lang/object/getPath.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isNil, isString } from "../base"; /** diff --git a/src/lang/object/hashCode.ts b/src/lang/object/hashCode.ts index 857eb42f..dec0057e 100644 --- a/src/lang/object/hashCode.ts +++ b/src/lang/object/hashCode.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { stringifyJson } from "../../json"; import { isBoolean, isNull, isNumber, isObject, isString, isUndefined } from "../base"; import { objectToString } from "./objectToString"; diff --git a/src/lang/object/index.ts b/src/lang/object/index.ts index 765bcdc6..4e9321d8 100644 --- a/src/lang/object/index.ts +++ b/src/lang/object/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./ObjectTag"; export * from "./equals"; diff --git a/src/lang/object/objectToString.ts b/src/lang/object/objectToString.ts index 7538bb96..8a669ff9 100644 --- a/src/lang/object/objectToString.ts +++ b/src/lang/object/objectToString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Converts `value` to a string using `Object.prototype.toString`. * diff --git a/src/lang/object/setPath.ts b/src/lang/object/setPath.ts index 60198216..1f245cc6 100644 --- a/src/lang/object/setPath.ts +++ b/src/lang/object/setPath.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil, isString } from "../base"; diff --git a/src/lang/string/escapeRegExp.ts b/src/lang/string/escapeRegExp.ts index 9d6821dd..8bfe94a4 100644 --- a/src/lang/string/escapeRegExp.ts +++ b/src/lang/string/escapeRegExp.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { EmptyStringException } from "../../exception"; import { isEmpty, isString } from "../base"; diff --git a/src/lang/string/index.ts b/src/lang/string/index.ts index ee5d214b..c8bf04ae 100644 --- a/src/lang/string/index.ts +++ b/src/lang/string/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./isEmail"; export * from "./isValidLocale"; diff --git a/src/lang/string/isEmail.ts b/src/lang/string/isEmail.ts index ac889f69..c0a39b0e 100644 --- a/src/lang/string/isEmail.ts +++ b/src/lang/string/isEmail.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidDomain } from "../../net"; import { isEmpty, isString } from "../base"; diff --git a/src/lang/string/isValidLocale.ts b/src/lang/string/isValidLocale.ts index 4f0053c8..0d8ecab2 100644 --- a/src/lang/string/isValidLocale.ts +++ b/src/lang/string/isValidLocale.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isString } from "../base"; /** diff --git a/src/lang/string/isValidSlug.ts b/src/lang/string/isValidSlug.ts index febbff85..b7132a8f 100644 --- a/src/lang/string/isValidSlug.ts +++ b/src/lang/string/isValidSlug.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isString } from "../base"; /** diff --git a/src/lang/string/isValidVersion.ts b/src/lang/string/isValidVersion.ts index 2be65dc1..ebd8bff8 100644 --- a/src/lang/string/isValidVersion.ts +++ b/src/lang/string/isValidVersion.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isString } from "../base"; const PATTERN = /^\d+$/; diff --git a/src/lang/string/isVersionCompatible.ts b/src/lang/string/isVersionCompatible.ts index b5fedcd4..0fea8ca0 100644 --- a/src/lang/string/isVersionCompatible.ts +++ b/src/lang/string/isVersionCompatible.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { versionCompare } from "./versionCompare"; /** diff --git a/src/lang/string/merge.ts b/src/lang/string/merge.ts index 8c72f007..08b576ae 100644 --- a/src/lang/string/merge.ts +++ b/src/lang/string/merge.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isNil, isString } from "../base"; import { getPath } from "../object"; diff --git a/src/lang/string/nonEmptyString.ts b/src/lang/string/nonEmptyString.ts index 214e0962..e6bbcc4b 100644 --- a/src/lang/string/nonEmptyString.ts +++ b/src/lang/string/nonEmptyString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidStringException } from "../../exception"; import { isString } from "../base/isString"; diff --git a/src/lang/string/nonValidEmail.ts b/src/lang/string/nonValidEmail.ts index 4b145990..7e9c8713 100644 --- a/src/lang/string/nonValidEmail.ts +++ b/src/lang/string/nonValidEmail.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmail } from "./isEmail"; /** diff --git a/src/lang/string/nonValidLocale.ts b/src/lang/string/nonValidLocale.ts index 2d29a7f8..223c5e94 100644 --- a/src/lang/string/nonValidLocale.ts +++ b/src/lang/string/nonValidLocale.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidLocale } from "./isValidLocale"; /** diff --git a/src/lang/string/nonValidSlug.ts b/src/lang/string/nonValidSlug.ts index 043614b5..b18de62e 100644 --- a/src/lang/string/nonValidSlug.ts +++ b/src/lang/string/nonValidSlug.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidSlug } from "./isValidSlug"; /** diff --git a/src/lang/string/nonValidVersion.ts b/src/lang/string/nonValidVersion.ts index 6ee88706..a9a691b2 100644 --- a/src/lang/string/nonValidVersion.ts +++ b/src/lang/string/nonValidVersion.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidVersion } from "./isValidVersion"; /** diff --git a/src/lang/string/nonVersionCompatible.ts b/src/lang/string/nonVersionCompatible.ts index a4ef4350..e9722f68 100644 --- a/src/lang/string/nonVersionCompatible.ts +++ b/src/lang/string/nonVersionCompatible.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isVersionCompatible } from "./isVersionCompatible"; /** diff --git a/src/lang/string/requireNonEmptyString.ts b/src/lang/string/requireNonEmptyString.ts index 93fb4aee..45e4662b 100644 --- a/src/lang/string/requireNonEmptyString.ts +++ b/src/lang/string/requireNonEmptyString.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { EmptyStringException } from "../../exception"; import { isEmpty, isString } from "../base"; diff --git a/src/lang/string/requireValidEmail.ts b/src/lang/string/requireValidEmail.ts index fa5642c6..307b18f1 100644 --- a/src/lang/string/requireValidEmail.ts +++ b/src/lang/string/requireValidEmail.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { InvalidEmailFormatException } from "../../exception"; import { isEmail } from "./isEmail"; import { requireNonEmptyString } from "./requireNonEmptyString"; diff --git a/src/lang/string/requireValidLocale.ts b/src/lang/string/requireValidLocale.ts index b835cfb7..c629b105 100644 --- a/src/lang/string/requireValidLocale.ts +++ b/src/lang/string/requireValidLocale.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidLocale } from "./isValidLocale"; import { requireNonEmptyString } from "./requireNonEmptyString"; diff --git a/src/lang/string/requireValidSlug.ts b/src/lang/string/requireValidSlug.ts index 8836ba10..1bd34df8 100644 --- a/src/lang/string/requireValidSlug.ts +++ b/src/lang/string/requireValidSlug.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidSlug } from "./isValidSlug"; import { requireNonEmptyString } from "./requireNonEmptyString"; diff --git a/src/lang/string/requireValidVersion.ts b/src/lang/string/requireValidVersion.ts index bc1e6362..3da1fa4a 100644 --- a/src/lang/string/requireValidVersion.ts +++ b/src/lang/string/requireValidVersion.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidVersion } from "./isValidVersion"; import { requireNonEmptyString } from "./requireNonEmptyString"; diff --git a/src/lang/string/requireVersionCompatible.ts b/src/lang/string/requireVersionCompatible.ts index 2a5ce42d..64f61d92 100644 --- a/src/lang/string/requireVersionCompatible.ts +++ b/src/lang/string/requireVersionCompatible.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isVersionCompatible } from "./isVersionCompatible"; diff --git a/src/lang/string/toCamelCase.ts b/src/lang/string/toCamelCase.ts index 78f265dc..31aff67e 100644 --- a/src/lang/string/toCamelCase.ts +++ b/src/lang/string/toCamelCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToCamelCaseOptions { diff --git a/src/lang/string/toKebabCase.ts b/src/lang/string/toKebabCase.ts index a4b5c733..0d69d771 100644 --- a/src/lang/string/toKebabCase.ts +++ b/src/lang/string/toKebabCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToKebabCaseOptions { diff --git a/src/lang/string/toLowerCase.ts b/src/lang/string/toLowerCase.ts index 46bdc022..82ab5658 100644 --- a/src/lang/string/toLowerCase.ts +++ b/src/lang/string/toLowerCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToLowerCaseOptions { diff --git a/src/lang/string/toProperCase.ts b/src/lang/string/toProperCase.ts index 747fdf53..67ddd8c5 100644 --- a/src/lang/string/toProperCase.ts +++ b/src/lang/string/toProperCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToProperCaseOptions { diff --git a/src/lang/string/toSnakeCase.ts b/src/lang/string/toSnakeCase.ts index db1c45f8..373b854a 100644 --- a/src/lang/string/toSnakeCase.ts +++ b/src/lang/string/toSnakeCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToSnakeCaseOptions { diff --git a/src/lang/string/toUpperCase.ts b/src/lang/string/toUpperCase.ts index ccbf1b12..d66178ca 100644 --- a/src/lang/string/toUpperCase.ts +++ b/src/lang/string/toUpperCase.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "./requireNonEmptyString"; interface ToUpperCaseOptions { diff --git a/src/lang/string/versionCompare.ts b/src/lang/string/versionCompare.ts index ea0f4b66..3c5fdefb 100644 --- a/src/lang/string/versionCompare.ts +++ b/src/lang/string/versionCompare.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidVersion } from "./isValidVersion"; /** diff --git a/src/net/emitter/index.ts b/src/net/emitter/index.ts index ba3b1348..0d4c9c75 100644 --- a/src/net/emitter/index.ts +++ b/src/net/emitter/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 // TODO: Abstract EventEmitter diff --git a/src/net/index.ts b/src/net/index.ts index 87fc2b2b..bfc455d0 100644 --- a/src/net/index.ts +++ b/src/net/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./emitter"; export * from "./path"; diff --git a/src/net/path/index.ts b/src/net/path/index.ts index 28da249f..189ebd97 100644 --- a/src/net/path/index.ts +++ b/src/net/path/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./types"; export * from "./isAbsolute"; diff --git a/src/net/path/isAbsolute.ts b/src/net/path/isAbsolute.ts index 4ffffc8e..91ba368b 100644 --- a/src/net/path/isAbsolute.ts +++ b/src/net/path/isAbsolute.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isString } from "../../lang"; /** diff --git a/src/net/path/isRelative.ts b/src/net/path/isRelative.ts index 94ece73e..754133cf 100644 --- a/src/net/path/isRelative.ts +++ b/src/net/path/isRelative.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isAbsolute } from "./isAbsolute"; /** diff --git a/src/net/path/isValidDomain.ts b/src/net/path/isValidDomain.ts index 556dd058..85e8b9fc 100644 --- a/src/net/path/isValidDomain.ts +++ b/src/net/path/isValidDomain.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isEmpty, isString } from "../../lang"; /** diff --git a/src/net/path/join.ts b/src/net/path/join.ts index 4d9bbc52..792aa8fb 100644 --- a/src/net/path/join.ts +++ b/src/net/path/join.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; /** diff --git a/src/net/path/nonAbsolute.ts b/src/net/path/nonAbsolute.ts index 9d982aea..c3dd63c8 100644 --- a/src/net/path/nonAbsolute.ts +++ b/src/net/path/nonAbsolute.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isAbsolute } from "./isAbsolute"; /** diff --git a/src/net/path/nonRelative.ts b/src/net/path/nonRelative.ts index a090800a..cb6ba480 100644 --- a/src/net/path/nonRelative.ts +++ b/src/net/path/nonRelative.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isRelative } from "./isRelative"; /** diff --git a/src/net/path/nonValidDomain.ts b/src/net/path/nonValidDomain.ts index 69995ae9..ea0c5416 100644 --- a/src/net/path/nonValidDomain.ts +++ b/src/net/path/nonValidDomain.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isValidDomain } from "./isValidDomain"; /** diff --git a/src/net/path/normalize.ts b/src/net/path/normalize.ts index 96d08622..56eaa113 100644 --- a/src/net/path/normalize.ts +++ b/src/net/path/normalize.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../../lang"; import { join } from "./join"; diff --git a/src/net/path/parse.ts b/src/net/path/parse.ts index 57db1924..ba63f148 100644 --- a/src/net/path/parse.ts +++ b/src/net/path/parse.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { requireNonEmptyString } from "../../lang"; import { ParsedPath } from "./types"; diff --git a/src/net/path/requireAbsolute.ts b/src/net/path/requireAbsolute.ts index 7ee8edf3..f98845a7 100644 --- a/src/net/path/requireAbsolute.ts +++ b/src/net/path/requireAbsolute.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isAbsolute } from "./isAbsolute"; diff --git a/src/net/path/requireRelative.ts b/src/net/path/requireRelative.ts index abcb2436..66bdf0f6 100644 --- a/src/net/path/requireRelative.ts +++ b/src/net/path/requireRelative.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isString } from "../../lang"; import { isRelative } from "./isRelative"; diff --git a/src/net/path/requireValidDomain.ts b/src/net/path/requireValidDomain.ts index 9f48b4ec..a7af46e5 100644 --- a/src/net/path/requireValidDomain.ts +++ b/src/net/path/requireValidDomain.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isValidDomain } from "./isValidDomain"; diff --git a/src/net/path/types/ParsedPath.ts b/src/net/path/types/ParsedPath.ts index cd0c46d2..1359502b 100644 --- a/src/net/path/types/ParsedPath.ts +++ b/src/net/path/types/ParsedPath.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * The parts a path breaks into, as {@link parse} reports them. * diff --git a/src/net/path/types/index.ts b/src/net/path/types/index.ts index 11811ed0..914319e9 100644 --- a/src/net/path/types/index.ts +++ b/src/net/path/types/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./ParsedPath"; diff --git a/src/net/url/index.ts b/src/net/url/index.ts index 3ee085b3..3fd37df2 100644 --- a/src/net/url/index.ts +++ b/src/net/url/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 // TODO: Abstract URL // TODO: Abstract URLSearchParams diff --git a/src/net/url/isUrl.ts b/src/net/url/isUrl.ts index 1e55f7fa..eeb61ef1 100644 --- a/src/net/url/isUrl.ts +++ b/src/net/url/isUrl.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isString } from "../../lang"; const SCHEME_PATTERN: RegExp = /^(https?|ftp):\/\//i; diff --git a/src/net/url/nonUrl.ts b/src/net/url/nonUrl.ts index 3d10a15d..adee5050 100644 --- a/src/net/url/nonUrl.ts +++ b/src/net/url/nonUrl.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { isUrl } from "./isUrl"; /** diff --git a/src/net/url/requireUrl.ts b/src/net/url/requireUrl.ts index a201e011..87c960c1 100644 --- a/src/net/url/requireUrl.ts +++ b/src/net/url/requireUrl.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../../exception"; import { isUrl } from "./isUrl"; diff --git a/src/time/StopWatch.ts b/src/time/StopWatch.ts index 4f572280..fca99f46 100644 --- a/src/time/StopWatch.ts +++ b/src/time/StopWatch.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalStateException } from "../exception"; import { now } from "./now"; diff --git a/src/time/diff.ts b/src/time/diff.ts index c9e7b845..7d18e693 100644 --- a/src/time/diff.ts +++ b/src/time/diff.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../exception"; import { offset } from "./offset"; import type { TimeUnit } from "./types"; diff --git a/src/time/getDaysInMonth.ts b/src/time/getDaysInMonth.ts index fe882975..bb09d776 100644 --- a/src/time/getDaysInMonth.ts +++ b/src/time/getDaysInMonth.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../exception"; /** diff --git a/src/time/getDaysLeftInMonth.ts b/src/time/getDaysLeftInMonth.ts index d22072b4..bbec7a6e 100644 --- a/src/time/getDaysLeftInMonth.ts +++ b/src/time/getDaysLeftInMonth.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../exception"; import { getDaysInMonth } from "./getDaysInMonth"; diff --git a/src/time/index.ts b/src/time/index.ts index d9f1dd48..7baee207 100644 --- a/src/time/index.ts +++ b/src/time/index.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./types"; export * from "./now"; diff --git a/src/time/now.ts b/src/time/now.ts index 227adad1..d61beb2d 100644 --- a/src/time/now.ts +++ b/src/time/now.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * Returns the number of milliseconds elapsed since the epoch (January 1, 1970, UTC). * diff --git a/src/time/offset.ts b/src/time/offset.ts index d4ffda3c..6d8a0e04 100644 --- a/src/time/offset.ts +++ b/src/time/offset.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 import { IllegalArgumentException } from "../exception"; import { getDaysInMonth } from "./getDaysInMonth"; import type { TimeUnit } from "./types"; diff --git a/src/time/types/TimeUnit.ts b/src/time/types/TimeUnit.ts index eed5c95a..8e85c9ca 100644 --- a/src/time/types/TimeUnit.ts +++ b/src/time/types/TimeUnit.ts @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: Apache-2.0 /** * A unit of time an interval can be expressed in. * diff --git a/src/time/types/index.ts b/src/time/types/index.ts index 1757efa6..835ac22d 100644 --- a/src/time/types/index.ts +++ b/src/time/types/index.ts @@ -1 +1,2 @@ +// SPDX-License-Identifier: Apache-2.0 export * from "./TimeUnit"; From d3d6b61731a5275355c97a85339ef72818cd76c7 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:08 +0100 Subject: [PATCH 3/7] docs(security): rewrite the security policy for @bootgs/utils Supported versions follow the rename: 3.x as @bootgs/utils once 3.0.0 is released, and security fixes for the 2.x line of apps-script-utils for 3 months after that. Reports go through GitHub private vulnerability reporting or security@maksymstoianov.com, with response targets of 5 business days, 14 days and 30 days. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- SECURITY.md | 110 ++++++++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index cc8ac284..0b209035 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,77 +1,79 @@ # Security Policy -This document outlines how to report vulnerabilities in **apps-script-utils**. We appreciate the efforts of security researchers -to help us keep the utility library secure. +This document explains which versions of **@bootgs/utils** receive security fixes and how to report a +vulnerability. We appreciate the work of security researchers who help keep the library and its users safe. ## Supported Versions -We aim to provide security updates for the following versions of **apps-script-utils** on a best-effort basis: - - - - - - - - - - - - - - - - - - -
VersionSupported
>= 2.0.0:white_check_mark:
< 2.0.0:x:
- -We recommend using the latest stable version to benefit from any security improvements. +| Version | Package | Supported | +| :------ | :------------------ | :---------------------------------------------------------------- | +| `3.x` | `@bootgs/utils` | :white_check_mark: once `3.0.0` is released | +| `2.x` | `apps-script-utils` | :warning: security fixes only, until 3 months after `3.0.0` ships | +| `< 2.0` | `apps-script-utils` | :x: | + +Version 3 is published under the new name `@bootgs/utils`; the `2.x` line was published as `apps-script-utils`. +The latest release receives all fixes. Please upgrade to the latest release to stay protected; see +[SUPPORT.md](SUPPORT.md) for the support policy. ## Reporting a Vulnerability -**Please do not report security vulnerabilities through public GitHub issues.** +**Please do not report security vulnerabilities through public issues, discussions or pull requests.** -If you discover a potential security vulnerability, please report it privately. +1. **Preferred:** use GitHub private vulnerability reporting — open the repository's + [**Security** tab → **Report a vulnerability**](https://github.com/bootgs/utils/security/advisories/new). +2. **Alternative:** email [security@maksymstoianov.com](mailto:security@maksymstoianov.com). -1. **Send an Email:** Send a report - to [stoianov.maksym+apps-script-utils+security@gmail.com](mailto:stoianov.maksym+apps-script-utils+security@gmail.com). -2. **Include Details:** To help us understand the issue, please include: - - A descriptive title. - - Type of issue. - - Affected versions. - - Step-by-step instructions to reproduce or a proof-of-concept. -3. **Wait for Response:** We will try to acknowledge your report as soon as possible, depending on our availability. +Please include: -## Our Security Process +- a short description and the type of issue (for example injection, prototype pollution, information disclosure); +- the affected versions; +- steps to reproduce or a proof of concept; +- the impact as you understand it, and any suggested fix. -When a vulnerability is reported, we will: +## Response Timeline -1. **Review:** Evaluate the report to determine if it is a valid security concern. -2. **Development:** If confirmed, we will work on a fix as our resources and time permit. -3. **Disclosure:** Once a fix is released, we may provide credit to the reporter (if they wish) and may publish a - security advisory. +| Step | Target | +| :----------------------------------------- | :--------------------------- | +| Acknowledgement of the report | within 5 business days | +| Initial assessment (validity and severity) | within 14 days | +| Fix released for critical or high severity | within 30 days of assessment | +| Fix for medium or low severity | in a regular release | -## Disclosure Policy +We keep you informed of progress and may ask for more details. Severity is rated with +[CVSS v3.1](https://www.first.org/cvss/v3.1/specification-document). -- We follow the principle of coordinated vulnerability disclosure. -- We ask that you give us a reasonable amount of time to resolve the issue before making any information public. +## Coordinated Disclosure -## Recognition +- We follow coordinated vulnerability disclosure: please keep the details private until a fix is released or + 90 days have passed since your report, whichever comes first, unless we agree on another date together. +- Fixes are published as a new release, and confirmed vulnerabilities get a + [GitHub Security Advisory](https://github.com/bootgs/utils/security/advisories) and, where applicable, a CVE. +- If a report is out of scope or not a vulnerability, we tell you why. -We value the work of security researchers and may credit those who report vulnerabilities in our release notes or -security advisories at our discretion. +## Credit -## Security Best Practices for Users +With your permission, we credit reporters by name or handle in the security advisory and release notes. Tell us +in your report how you would like to be credited, or if you prefer to stay anonymous. We do not run a paid bug +bounty programme. + +## Scope -To help keep your applications secure, we recommend following these general best practices: +In scope: the source code in this repository, the `@bootgs/utils` package published on npm and the `2.x` releases +of `apps-script-utils` while they are supported. + +Out of scope: vulnerabilities in Google Apps Script itself or other Google services (report them to +[Google](https://bughunters.google.com/)), in development dependencies or other third-party packages (report them +upstream; we will update the dependency), and in scripts built with the library that are caused by their own code +or configuration. + +## Security Best Practices for Users -1. **Keep Dependencies Updated:** Regularly update your project dependencies. -2. **Secret Management:** Never commit sensitive information (API keys, secrets) to your repository. Use environment - variables. -3. **Principle of Least Privilege:** Grant only necessary permissions in your `appsscript.json`. -4. **Input Validation:** Always validate and sanitize user input. +1. **Keep dependencies updated:** use the latest `@bootgs/utils` release and keep other packages current. +2. **Secret management:** never commit API keys or secrets; use `PropertiesService` or another secret store. +3. **Least privilege:** declare only the OAuth scopes you need in `appsscript.json`. +4. **Input validation:** validate input from users, sheets and web requests before acting on it, for example with + the library's `require*` checks. --- -_Thank you for helping us keep **apps-script-utils** secure!_ +_Thank you for helping us keep **@bootgs/utils** secure!_ From aba9fa2acdd50c80e1a99c4dda09050399fb8920 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:08 +0100 Subject: [PATCH 4/7] docs(contributing): require a DCO sign-off and check it in CI CONTRIBUTING.md quotes the Developer Certificate of Origin 1.1 and explains git commit -s. The dco workflow fails a pull request whose commits lack a Signed-off-by trailer matching their author; bot commits and merges are skipped. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- .github/workflows/dco.yml | 92 +++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 71 +++++++++++++++++++++++++++++- 2 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dco.yml diff --git a/.github/workflows/dco.yml b/.github/workflows/dco.yml new file mode 100644 index 00000000..88cd828b --- /dev/null +++ b/.github/workflows/dco.yml @@ -0,0 +1,92 @@ +# Developer Certificate of Origin: every commit of a pull request must carry a +# "Signed-off-by: Name " trailer that matches its author (git commit -s). +# See CONTRIBUTING.md → Developer Certificate of Origin. + +name: dco + +on: + pull_request: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + sign-off: + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + persist-credentials: false + + - name: check + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + # Skips merge commits and bot authors (Dependabot, GitHub Actions, release-please). + shell: bash + run: | + set -euo pipefail + + range="$(git merge-base "$BASE_SHA" "$HEAD_SHA")..$HEAD_SHA" + + lower() { printf '%s' "$1" | tr '[:upper:]' '[:lower:]'; } + + failed=0 + checked=0 + + while IFS= read -r -d '' record; do + IFS=$'\x1f' read -r sha name email trailers <<<"$record" + [ -n "$sha" ] || continue + + case "$email" in + *"[bot]@users.noreply.github.com" | "noreply@github.com" | *"dependabot"* | *"release-please"*) + echo "skip ${sha:0:12} ($name, bot)" + continue + ;; + esac + case "$name" in + "dependabot[bot]" | "github-actions[bot]" | "github-actions" | "release-please[bot]") + echo "skip ${sha:0:12} ($name, bot)" + continue + ;; + esac + + checked=$((checked + 1)) + expected="$name <$email>" + found=0 + while IFS= read -r line; do + line="${line#"${line%%[![:space:]]*}"}" + line="${line%"${line##*[![:space:]]}"}" + [ -n "$line" ] || continue + if [ "$(lower "$line")" = "$(lower "$expected")" ]; then + found=1 + break + fi + done <<<"${trailers//$'\x1e'/$'\n'}" + + if [ "$found" -eq 1 ]; then + echo "ok ${sha:0:12} $expected" + else + echo "FAIL ${sha:0:12} missing \"Signed-off-by: $expected\"" + failed=$((failed + 1)) + fi + done < <(git log --no-merges -z \ + --format="%H%x1f%an%x1f%ae%x1f%(trailers:key=Signed-off-by,valueonly,separator=%x1e)" "$range") + + echo + if [ "$failed" -gt 0 ]; then + echo "$failed of $checked commit(s) lack a matching Signed-off-by trailer." + echo "Sign off with 'git commit -s'; fix existing commits with 'git rebase --signoff origin/develop'." + echo "See CONTRIBUTING.md → Developer Certificate of Origin." + exit 1 + fi + echo "All $checked commit(s) are signed off." diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2778e822..03eb6dc7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,6 +18,7 @@ Great that you are here and you want to contribute to **@bootgs/utils**! - [Development Cycle](#development-cycle) - [Basic Development Workflow](#basic-development-workflow) - [Commit Message Guidelines](#commit-message-guidelines) + - [Developer Certificate of Origin](#developer-certificate-of-origin) - [Community PR Guidelines](#community-pr-guidelines) - [1. General Requirements](#1-general-requirements) - [2. PR Specific Requirements](#2-pr-specific-requirements) @@ -90,7 +91,8 @@ The project is organized as follows: ```bash npm run test ``` -4. Commit your changes following the [Commit Message Guidelines](#commit-message-guidelines) and create a Pull Request. +4. Commit your changes following the [Commit Message Guidelines](#commit-message-guidelines), sign them off + ([DCO](#developer-certificate-of-origin)) with `git commit -s` and create a Pull Request. ### Commit Message Guidelines @@ -149,6 +151,73 @@ feat(core)!: drop support for legacy handler format - `test: add unit tests for ResponseBuilder` - `chore: update dependencies` +### Developer Certificate of Origin + +All contributions are accepted under the [Developer Certificate of Origin 1.1](https://developercertificate.org/) +(DCO). By signing off a commit you certify that you wrote the change or otherwise have the right to submit it under +the project's licence: + +```text +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +Every commit in a pull request must carry a `Signed-off-by:` trailer with the name and email of the commit author. +Git adds it for you with `-s`: + +```bash +git commit -s -m "fix(sheet): handle an empty range" +``` + +This produces: + +```text +Signed-off-by: Your Name +``` + +Use your real name (no anonymous contributions) and the same email as the commit author. A +[DCO check](.github/workflows/dco.yml) runs on every pull request. To sign off commits you already made: + +```bash +git rebase --signoff origin/develop +git push --force-with-lease +``` + +Commits written with the help of AI assistants are signed off by the human author, who is responsible for them; +see [Tools and AI Assistance](docs/tools-and-ai.md). + ### Community PR Guidelines #### 1. General Requirements From 3a56440c15c8ea9e4a0476df1b18f5b1ed1a1a28 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:09 +0100 Subject: [PATCH 5/7] docs: add governance, maintainers, code owners and support policy GOVERNANCE.md covers decisions, releases and continuity; MAINTAINERS.md and .github/CODEOWNERS name the lead maintainer; SUPPORT.md gives the support policy and tells 2.x users of apps-script-utils how to move to @bootgs/utils 3.x. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- .github/CODEOWNERS | 4 +++ GOVERNANCE.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++ MAINTAINERS.md | 7 +++++ SUPPORT.md | 52 ++++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 GOVERNANCE.md create mode 100644 MAINTAINERS.md create mode 100644 SUPPORT.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..5bd8abb1 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,4 @@ +# Code owners are requested for review on every pull request. +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + +* @MaksymStoianov diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 00000000..3fd97c99 --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,74 @@ +# Governance + +This document describes how **@bootgs/utils** is run: who makes decisions, how releases are made and how the +project stays available if a maintainer is not. + +## Current Model + +@bootgs/utils has a **single lead maintainer** (see [MAINTAINERS.md](MAINTAINERS.md)). The lead maintainer: + +- sets the direction of the project; +- reviews and merges pull requests; +- cuts releases and manages the GitHub organisation and the npm package; +- enforces the [Code of Conduct](CODE_OF_CONDUCT.md). + +The project is **looking for co-maintainers**. As the community grows, we intend to move to a small group of +maintainers deciding by lazy consensus. + +## Decision Making + +- Every change goes through a public **issue** or **pull request** on GitHub, so the discussion and the decision + are on record. +- Larger changes (new public API, breaking changes, new dependencies) start with an issue or a discussion before + code is written. +- Anyone may comment and propose changes. The lead maintainer makes the final decision and explains it in the + issue or pull request. +- Every pull request needs review and approval by a maintainer (enforced by [CODEOWNERS](.github/CODEOWNERS)) and + passing CI checks before it is merged. + +## Becoming a Maintainer + +Contributors who have shown sustained, high-quality involvement — merged pull requests, reviews, help in issues and +discussions — may be invited to become maintainers. You can also ask: open a discussion or contact the lead +maintainer. New maintainers are added to [MAINTAINERS.md](MAINTAINERS.md) through a pull request and receive +access step by step (triage, then write, then release). + +Maintainers who are inactive for 12 months may be moved to emeritus status, with thanks. + +## Continuity + +To make sure the project is not lost if the lead maintainer becomes unavailable: + +- emergency access to the GitHub organisation and the npm package is held by a trusted backup person, with + credentials stored securely and two-factor authentication enabled on every account; +- the backup person may act only to keep the project available: transfer administration to active maintainers, + rotate credentials, or archive the project with a notice; they do not take part in day-to-day decisions; +- if no maintainer is active for 6 months, the backup person may hand the project over to a community member + willing to maintain it, announced publicly in advance; +- the code is licensed under Apache-2.0, so anyone may fork it at any time. + +## Releases + +- Releases are automated with [release-please](https://github.com/googleapis/release-please-action): merged + [Conventional Commits](https://www.conventionalcommits.org/) on `main` produce a release pull request with the + version bump and `CHANGELOG.md`; merging it creates the tag and the GitHub release. +- The release workflow builds, tests and publishes the package to npm with + [trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC, no long-lived token) and + [provenance](https://docs.npmjs.com/generating-provenance-statements), so every published version can be traced + to the commit and workflow that built it. +- A CycloneDX SBOM of the production dependencies is attached to each GitHub release. + +## Support + +The latest release line receives fixes; the previous major receives security fixes for 3 months after a new major; +deprecations are announced at least one minor ahead and removed only in a major. Details: [SUPPORT.md](SUPPORT.md). +Security issues: [SECURITY.md](SECURITY.md). + +## Tools and AI Assistance + +Development uses AI assistants; humans review and are responsible for every change. See +[docs/tools-and-ai.md](docs/tools-and-ai.md). + +## Changes to This Document + +Changes to governance are made by pull request and stay open for comments for at least 7 days before merging. diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 00000000..5d1365bb --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,7 @@ +# Maintainers + +| Name | GitHub | Role | +| :-------------- | :--------------------------------------------------- | :-------------- | +| Maksym Stoianov | [@MaksymStoianov](https://github.com/MaksymStoianov) | Lead maintainer | + +See [GOVERNANCE.md](GOVERNANCE.md) for how decisions are made and how to become a maintainer. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 00000000..21525811 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,52 @@ +# Support + +## Getting Help + +- **Questions and ideas:** [GitHub Discussions](https://github.com/bootgs/utils/discussions). +- **Bugs and feature requests:** [GitHub Issues](https://github.com/bootgs/utils/issues) — please use the issue + templates and include the `@bootgs/utils` version and a minimal reproduction. +- **Security vulnerabilities:** never in public — follow [SECURITY.md](SECURITY.md). + +Community support is provided on a best-effort basis by the maintainers and contributors. + +## Support Policy + +@bootgs/utils follows [Semantic Versioning](https://semver.org/). + +| Release line | What it receives | +| :------------------------------------------- | :---------------------------------------------------------- | +| `3.x` — `@bootgs/utils` (once `3.0.0` ships) | Bug fixes, security fixes and new features | +| `2.x` — `apps-script-utils` | Security fixes only, for 3 months after `3.0.0` is released | +| Older releases | No fixes — please upgrade | + +There is no separate LTS line at the moment; the policy above applies to every major version: the previous major +receives security fixes for 3 months after the next major is released. + +### Moving from `apps-script-utils` 2.x + +Version 3 is published under a new name. If you use `apps-script-utils` 2.x, move to `@bootgs/utils` 3.x: + +```bash +npm uninstall apps-script-utils +npm install @bootgs/utils +``` + +and change your imports from `"apps-script-utils"` to `"@bootgs/utils"`. The breaking changes of 3.0.0 are listed +in [CHANGELOG.md](CHANGELOG.md). The `apps-script-utils` package receives no new features. + +### Deprecations and Breaking Changes + +- A deprecation is announced in the changelog and in the API documentation (`@deprecated`) at least one minor + release before the feature is removed. +- Deprecated features are removed only in a new major release. +- Breaking changes are listed in the release notes and `CHANGELOG.md` under **BREAKING CHANGES**. + +### Runtime Requirements + +- Google Apps Script V8 runtime. +- Node.js `>= 22.14.0` for development and building (see `engines` in `package.json`). + +## Commercial Support + +Consulting, custom development, priority fixes and support agreements are available from the maintainer: +[maksymstoianov.com](https://maksymstoianov.com). From a7a8f8c1b9f16efcd867d6432d0baf89da8cbb31 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:09 +0100 Subject: [PATCH 6/7] docs: adopt the Contributor Covenant 2.1 Replaces version 1.4 with the verbatim text of version 2.1; the enforcement contact stays the same. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- CODE_OF_CONDUCT.md | 160 ++++++++++++++++++++++++++++++--------------- 1 file changed, 108 insertions(+), 52 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ae17d421..4fb1ee52 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,75 +2,131 @@ ## Our Pledge -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. -Examples of unacceptable behavior by participants include: +## Our Standards -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting -## Our Responsibilities +## Enforcement Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. ## Scope -This Code of Conduct applies within all project spaces, and it also applies when -an individual is representing the project or its community in public spaces. -Examples of representing a project or community include using an official -project e-mail address, posting via an official social media account, or acting -as an appointed representative at an online or offline event. Representation of -a project may be further defined and clarified by project maintainers. +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at stoianov.maksym@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +reported to the community leaders responsible for enforcement at +stoianov.maksym@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. -[homepage]: https://www.contributor-covenant.org +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations From 0bfbefe2e9937d4b1518caaf485591eb28be86db Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 16:51:10 +0100 Subject: [PATCH 7/7] docs: add a pull request template, AI and privacy notes, trademarks docs/tools-and-ai.md describes how AI assistants are used and the rules for them; docs/privacy.md states that the library makes no network calls of its own and collects no data; TRADEMARKS.md adds guidance on the Boot.gs and @bootgs names. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- .github/pull_request_template.md | 28 +++++++++++++++++++++++++ TRADEMARKS.md | 36 ++++++++++++++++++++++++++++++++ docs/privacy.md | 23 ++++++++++++++++++++ docs/tools-and-ai.md | 27 ++++++++++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 .github/pull_request_template.md create mode 100644 TRADEMARKS.md create mode 100644 docs/privacy.md create mode 100644 docs/tools-and-ai.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..301cf83d --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,28 @@ +## Summary + + + +## Type of change + +- [ ] `fix` — bug fix (non-breaking) +- [ ] `feat` — new feature (non-breaking) +- [ ] Breaking change (`!` / `BREAKING CHANGE:` footer) +- [ ] `docs` — documentation only +- [ ] `refactor` / `perf` / `test` / `build` / `ci` / `chore` + +## Checklist + +- [ ] The PR title follows [Conventional Commits](https://www.conventionalcommits.org/). +- [ ] Every commit is signed off (`git commit -s`) under the + [DCO](https://github.com/bootgs/utils/blob/develop/CONTRIBUTING.md#developer-certificate-of-origin). +- [ ] Tests are added or updated and `npm test` passes. +- [ ] `npm run type:check`, `npm run lint` and `npm run format` pass. +- [ ] The generated documentation is up to date (`npm run docs:generate`, then `npm run docs:check` passes). +- [ ] Public API changes are documented (JSDoc, docs, changelog notes in the commit body). +- [ ] No secrets, credentials or personal data are included. +- [ ] AI-assisted commits carry a `Co-Authored-By:` trailer and I have reviewed every line + ([Tools and AI Assistance](https://github.com/bootgs/utils/blob/develop/docs/tools-and-ai.md)). + +## Notes for reviewers + + diff --git a/TRADEMARKS.md b/TRADEMARKS.md new file mode 100644 index 00000000..b0cbce53 --- /dev/null +++ b/TRADEMARKS.md @@ -0,0 +1,36 @@ +# Trademarks + +## Third-party trademarks + +**Google Apps Script** is a trademark of Google LLC. Google, Google Sheets, Google Slides, Google Docs, Google Forms, +Google Drive and related marks are trademarks of Google LLC. + +**@bootgs/utils** is an independent open-source library. It is **not** affiliated with, endorsed by or sponsored by +Google LLC. References to Google products describe compatibility only. + +All other trademarks are the property of their respective owners. + +## The Boot.gs name + +The names **Boot.gs**, **bootgs** and **@bootgs/utils** identify this project, the +[bootgs](https://github.com/bootgs) organisation and its official releases on [GitHub](https://github.com/bootgs/utils) +and [npm](https://www.npmjs.com/package/@bootgs/utils). + +You may, without asking: + +- use the name to refer to the library, for example "built with @bootgs/utils"; +- use the name in articles, tutorials, talks and comparisons; +- state that your fork is "based on @bootgs/utils". + +Please do not: + +- name a fork, product, package or service "Boot.gs", "bootgs" or "@bootgs/…", or a confusingly similar name; +- use the name in a way that suggests endorsement by, or an official connection with, the project or its + maintainers when there is none; +- publish modified builds under the `@bootgs` npm scope or the `@bootgs/utils` package name. + +The Apache-2.0 licence covers the code; it does not grant trademark rights (section 6 of the +[licence](LICENSE)). For any other use, open an issue or contact the maintainer listed in +[MAINTAINERS.md](MAINTAINERS.md). + +The banner artwork has its own terms: see [docs/assets/images/README.md](docs/assets/images/README.md). diff --git a/docs/privacy.md b/docs/privacy.md new file mode 100644 index 00000000..d4fad314 --- /dev/null +++ b/docs/privacy.md @@ -0,0 +1,23 @@ +# Privacy + +**@bootgs/utils collects no data.** + +- The library makes **no network calls of its own**: it does not use `UrlFetchApp`, `fetch` or any other HTTP + client, and it contacts no server — neither the maintainers' nor a third party's. +- It contains **no telemetry**, analytics, tracking or "phone home" code. +- It runs entirely inside your Google Apps Script project. Spreadsheet, document and user data that your code passes + to it, or that it reads on your behalf, stay in your project and the Google services your script already uses. +- The Apps Script services it calls are the ones a function exists to work with: for example `SpreadsheetApp` for + the sheet helpers, `DriveApp` for the Drive helpers, the Admin SDK Directory service (`AdminDirectory`) for + `isAdmin`, and `Session` to read the active user's email. Each function, its services and the OAuth scope it + needs are listed on the + [Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) page. + +Your own code, other libraries you add and Google's services are governed by their own terms and privacy +policies, for example the [Google Privacy Policy](https://policies.google.com/privacy). + +Installing the package from npm is subject to the +[npm privacy policy](https://docs.npmjs.com/policies/privacy); the project receives only the aggregate download +counts that npm publishes. + +Questions: open an [issue](https://github.com/bootgs/utils/issues) or see [SUPPORT.md](../SUPPORT.md). diff --git a/docs/tools-and-ai.md b/docs/tools-and-ai.md new file mode 100644 index 00000000..a1069035 --- /dev/null +++ b/docs/tools-and-ai.md @@ -0,0 +1,27 @@ +# Tools and AI Assistance + +## AI assistants + +@bootgs/utils is developed with the help of AI coding assistants, currently +[Anthropic Claude](https://www.anthropic.com/claude) and [Google Antigravity](https://antigravity.google/). +They are used for tasks such as drafting code, tests and documentation, reviewing changes and investigating issues. + +## Rules + +- **Humans are responsible.** Every change is reviewed by a human maintainer before it is merged. The author of + a commit is responsible for it, whether or not an assistant helped write it, and certifies the + [Developer Certificate of Origin](../CONTRIBUTING.md#developer-certificate-of-origin) for it. +- **Transparency.** Commits written with substantial AI assistance carry a `Co-Authored-By:` trailer naming the + assistant, for example: + + ```text + Co-Authored-By: Claude + ``` + +- **Same quality bar.** AI-assisted changes go through the same CI checks, tests and review as any other change. +- **No secrets or private data.** Credentials, personal data and non-public material are never shared with + assistants. +- **Licensing.** Contributors must make sure that AI-generated content does not reproduce third-party code under + an incompatible licence. + +Contributors are welcome to use AI assistants under the same rules.