@duplojs/agents-kit 0.1.0-beta.3 → 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/dist/bin/index.mjs +2 -2
- package/dist/bin/installSkill/index.d.ts +2 -0
- package/dist/bin/{install → installSkill}/index.mjs +3 -3
- package/dist/bin/{install → installSkill}/skill.mjs +1 -1
- package/dist/bin/setup/instructions.d.ts +1 -1
- package/docs/API/10-lang/10-array/10-at.ts +4 -4
- package/docs/API/10-lang/10-array/10-coalescing.ts +3 -2
- package/docs/API/10-lang/10-array/10-indexOf.ts +1 -1
- package/docs/API/10-lang/10-array/10-is.ts +17 -3
- package/docs/API/10-lang/10-array/10-lastIndexOf.ts +1 -1
- package/docs/API/10-lang/10-chrono/10-addTime.ts +1 -1
- package/docs/API/10-lang/10-chrono/10-closestTo.ts +5 -8
- package/docs/API/10-lang/10-chrono/10-isDate.ts +15 -2
- package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +16 -1
- package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +16 -1
- package/docs/API/10-lang/10-chrono/10-isTime.ts +15 -2
- package/docs/API/10-lang/10-chrono/10-maxDate.ts +4 -8
- package/docs/API/10-lang/10-chrono/10-maxTime.ts +4 -8
- package/docs/API/10-lang/10-chrono/10-minDate.ts +4 -8
- package/docs/API/10-lang/10-chrono/10-minTime.ts +4 -8
- package/docs/API/10-lang/10-chrono/10-sortDates.ts +6 -8
- package/docs/API/10-lang/10-chrono/10-sortTimes.ts +6 -8
- package/docs/API/10-lang/10-chrono/10-subtractTime.ts +1 -1
- package/docs/API/10-lang/10-common/10-and.ts +6 -0
- package/docs/API/10-lang/10-common/10-createQueue.ts +4 -3
- package/docs/API/10-lang/10-common/10-createTransformer.ts +1 -1
- package/docs/API/10-lang/10-common/10-equal.ts +6 -0
- package/docs/API/10-lang/10-common/10-falsy.ts +19 -0
- package/docs/API/10-lang/10-common/10-instanceOf.ts +14 -3
- package/docs/API/10-lang/10-common/10-isType.ts +6 -0
- package/docs/API/10-lang/10-common/10-justExec.ts +3 -3
- package/docs/API/10-lang/10-common/10-or.ts +17 -3
- package/docs/API/10-lang/10-common/10-tap.ts +28 -0
- package/docs/API/10-lang/10-common/10-toJSON.ts +1 -1
- package/docs/API/10-lang/10-common/10-toNative.ts +1 -1
- package/docs/API/10-lang/10-common/10-toRegExp.ts +1 -1
- package/docs/API/10-lang/10-common/10-truthy.ts +19 -0
- package/docs/API/10-lang/10-common/10-whenNot.ts +44 -13
- package/docs/API/10-lang/10-common/index.llms.md +4 -0
- package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +2 -2
- package/docs/API/10-lang/10-either/10-asyncGroup.ts +1 -1
- package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +4 -2
- package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
- package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +1 -1
- package/docs/API/10-lang/10-either/10-group.ts +1 -1
- package/docs/API/10-lang/10-either/10-hasInformation.ts +6 -0
- package/docs/API/10-lang/10-either/10-isLeft.ts +10 -1
- package/docs/API/10-lang/10-either/10-isRight.ts +10 -1
- package/docs/API/10-lang/10-either/10-isSelected.ts +13 -1
- package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +1 -1
- package/docs/API/10-lang/10-either/10-matchInformation.ts +7 -5
- package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
- package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
- package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +7 -5
- package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +2 -1
- package/docs/API/10-lang/10-either/10-rightPipe.ts +1 -1
- package/docs/API/10-lang/10-either/10-safeCallback.ts +1 -1
- package/docs/API/10-lang/10-either/10-unwrapOr.ts +2 -2
- package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +2 -2
- package/docs/API/10-lang/10-either/10-whenHasInformation.ts +4 -3
- package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +5 -5
- package/docs/API/10-lang/10-either/10-whenIsLeft.ts +2 -2
- package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +5 -5
- package/docs/API/10-lang/10-either/10-whenIsRight.ts +2 -2
- package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +7 -7
- package/docs/API/10-lang/10-either/10-whenIsSelected.ts +5 -5
- package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +5 -5
- package/docs/API/10-lang/10-either/index.llms.md +12 -0
- package/docs/API/10-lang/10-generator/10-asyncConcat.ts +7 -10
- package/docs/API/10-lang/10-generator/10-asyncFlat.ts +6 -6
- package/docs/API/10-lang/10-generator/10-concat.ts +3 -3
- package/docs/API/10-lang/10-generator/10-flat.ts +2 -2
- package/docs/API/10-lang/10-generator/10-map.ts +1 -1
- package/docs/API/10-lang/10-generator/10-reduce.ts +1 -1
- package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
- package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
- package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
- package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
- package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
- package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
- package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
- package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
- package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
- package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
- package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
- package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
- package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
- package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
- package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
- package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
- package/docs/API/10-lang/10-number/10-max.ts +19 -0
- package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
- package/docs/API/10-lang/10-number/10-min.ts +19 -0
- package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
- package/docs/API/10-lang/10-number/10-sort.ts +19 -0
- package/docs/API/10-lang/10-number/10-sum.ts +19 -0
- package/docs/API/10-lang/10-number/index.llms.md +92 -0
- package/docs/API/10-lang/10-number/index.md +3 -0
- package/docs/API/10-lang/10-object/10-assign.ts +41 -0
- package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
- package/docs/API/10-lang/10-object/10-deepDiscriminate.ts +63 -0
- package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
- package/docs/API/10-lang/10-object/10-discriminate.ts +55 -0
- package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
- package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
- package/docs/API/10-lang/10-object/10-entries.ts +19 -0
- package/docs/API/10-lang/10-object/10-entry.ts +17 -0
- package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
- package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
- package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
- package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
- package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
- package/docs/API/10-lang/10-object/10-keys.ts +19 -0
- package/docs/API/10-lang/10-object/10-omit.ts +39 -0
- package/docs/API/10-lang/10-object/10-override.ts +24 -0
- package/docs/API/10-lang/10-object/10-pick.ts +41 -0
- package/docs/API/10-lang/10-object/10-to.ts +40 -0
- package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
- package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
- package/docs/API/10-lang/10-object/10-values.ts +19 -0
- package/docs/API/10-lang/10-object/index.llms.md +92 -0
- package/docs/API/10-lang/10-object/index.md +3 -0
- package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
- package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
- package/docs/API/10-lang/10-path/10-create.ts +21 -0
- package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
- package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
- package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
- package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
- package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
- package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
- package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
- package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
- package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
- package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
- package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
- package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
- package/docs/API/10-lang/10-path/10-is.ts +46 -0
- package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
- package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
- package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
- package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
- package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
- package/docs/API/10-lang/10-path/index.llms.md +88 -0
- package/docs/API/10-lang/10-path/index.md +3 -0
- package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
- package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
- package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
- package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
- package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
- package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
- package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
- package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
- package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
- package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
- package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
- package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
- package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
- package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
- package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
- package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
- package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
- package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
- package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
- package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
- package/docs/API/10-lang/10-pattern/index.md +3 -0
- package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
- package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
- package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
- package/docs/API/10-lang/10-printer/10-primitives.md +19 -0
- package/docs/API/10-lang/10-printer/10-renderLine.ts +36 -0
- package/docs/API/10-lang/10-printer/10-renderParagraph.ts +37 -0
- package/docs/API/10-lang/10-printer/index.llms.md +29 -0
- package/docs/API/10-lang/10-printer/index.md +3 -0
- package/docs/API/10-lang/10-string/10-at.ts +18 -0
- package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
- package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
- package/docs/API/10-lang/10-string/10-concat.ts +18 -0
- package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
- package/docs/API/10-lang/10-string/10-extract.ts +18 -0
- package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
- package/docs/API/10-lang/10-string/10-first.ts +17 -0
- package/docs/API/10-lang/10-string/10-includes.ts +33 -0
- package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
- package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
- package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
- package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
- package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
- package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
- package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
- package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
- package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
- package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
- package/docs/API/10-lang/10-string/10-join.ts +18 -0
- package/docs/API/10-lang/10-string/10-last.ts +17 -0
- package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
- package/docs/API/10-lang/10-string/10-length.ts +18 -0
- package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
- package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
- package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
- package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
- package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
- package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
- package/docs/API/10-lang/10-string/10-pop.ts +17 -0
- package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
- package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
- package/docs/API/10-lang/10-string/10-replace.ts +18 -0
- package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
- package/docs/API/10-lang/10-string/10-search.ts +17 -0
- package/docs/API/10-lang/10-string/10-shift.ts +17 -0
- package/docs/API/10-lang/10-string/10-slice.ts +17 -0
- package/docs/API/10-lang/10-string/10-sort.ts +19 -0
- package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
- package/docs/API/10-lang/10-string/10-split.ts +34 -0
- package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
- package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
- package/docs/API/10-lang/10-string/10-substring.ts +17 -0
- package/docs/API/10-lang/10-string/10-test.ts +17 -0
- package/docs/API/10-lang/10-string/10-to.ts +11 -0
- package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
- package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
- package/docs/API/10-lang/10-string/10-trim.ts +17 -0
- package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
- package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
- package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
- package/docs/API/10-lang/10-string/index.llms.md +208 -0
- package/docs/API/10-lang/10-string/index.md +3 -0
- package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
- package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
- package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
- package/docs/API/10-lang/10-tuple/index.md +3 -0
- package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
- package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
- package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
- package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
- package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
- package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
- package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
- package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
- package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
- package/docs/API/40-json-web-token/20-signer/index.md +3 -0
- package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
- package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
- package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
- package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
- package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
- package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
- package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
- package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
- package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
- package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
- package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
- package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
- package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
- package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
- package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
- package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
- package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
- package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
- package/docs/API/40-json-web-token/40-utils/index.md +3 -0
- package/docs/API/40-json-web-token/index.md +3 -0
- package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
- package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
- package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
- package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
- package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
- package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
- package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
- package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
- package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
- package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
- package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
- package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
- package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
- package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
- package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
- package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
- package/docs/API/50-form/10-vue/index.md +3 -0
- package/docs/API/50-form/index.md +3 -0
- package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
- package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
- package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
- package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
- package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
- package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
- package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
- package/docs/API/60-playwright/10-construction/index.md +3 -0
- package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
- package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
- package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
- package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
- package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
- package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
- package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
- package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
- package/docs/API/60-playwright/20-actions/index.md +3 -0
- package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
- package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
- package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
- package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
- package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
- package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
- package/docs/API/60-playwright/30-assertions/index.md +3 -0
- package/docs/API/60-playwright/fixtures/component.ts +44 -0
- package/docs/API/60-playwright/index.md +3 -0
- package/docs/API.llms.md +84 -0
- package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +9 -6
- package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +9 -5
- package/docs/concepts/01-fundamental/02-currying/01-use.ts +5 -0
- package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +28 -16
- package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +11 -2
- package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +11 -2
- package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +23 -12
- package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +27 -10
- package/docs/concepts/01-fundamental/03-either/30-composition.ts +18 -10
- package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +10 -4
- package/docs/concepts/01-fundamental/03-either/50-external-results.ts +16 -3
- package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +110 -59
- package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +20 -12
- package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +13 -9
- package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +31 -20
- package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +10 -1
- package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +39 -13
- package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +20 -4
- package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +22 -6
- package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +5 -1
- package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +29 -42
- package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +46 -23
- package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +30 -33
- package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +52 -20
- package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +54 -38
- package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +52 -20
- package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +26 -10
- package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +29 -10
- package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +10 -2
- package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +18 -6
- package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
- package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
- package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
- package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
- package/docs/concepts/02-server/10-file/10-manipulation.ts +15 -3
- package/docs/concepts/02-server/10-file/20-path.ts +22 -6
- package/docs/concepts/02-server/20-http/10-init.ts +1 -9
- package/docs/concepts/02-server/20-http/20-route.ts +40 -32
- package/docs/concepts/02-server/20-http/30-routine.ts +12 -19
- package/docs/concepts/02-server/20-http/40-jwt.ts +49 -37
- package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
- package/docs/concepts/02-server/20-http/index.md +1 -1
- package/docs/concepts/02-server/30-environment/10-platform.ts +12 -3
- package/docs/concepts/02-server/30-environment/20-variable.ts +13 -7
- package/docs/concepts/03-client/10-http/10-init.ts +11 -23
- package/docs/concepts/03-client/10-http/20-request.ts +79 -69
- package/docs/concepts/03-client/10-http/30-hook.ts +23 -23
- package/docs/concepts/03-client/20-form/10-init.ts +18 -15
- package/docs/concepts/03-client/20-form/20-input.ts +13 -6
- package/docs/concepts/03-client/20-form/30-layout.ts +44 -49
- package/docs/concepts/03-client/20-form/40-template.ts +10 -5
- package/docs/concepts/03-client/20-form/50-integration.md +11 -0
- package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
- package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
- package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +23 -20
- package/docs/concepts/05-type-driven-design/01-architecture/index.md +1 -1
- package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +29 -37
- package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +42 -26
- package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +20 -26
- package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
- package/docs/concepts/05-type-driven-design/02-domains/index.md +1 -1
- package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +33 -40
- package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
- package/docs/concepts/05-type-driven-design/03-applications/index.md +1 -1
- package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +27 -36
- package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +1 -1
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +30 -12
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +9 -8
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +7 -7
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +72 -13
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +37 -11
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +29 -17
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +4 -5
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +9 -9
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +11 -9
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +42 -11
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +11 -9
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +10 -10
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +6 -29
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +1 -1
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +3 -3
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +2 -2
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +2 -2
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +23 -14
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +7 -12
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +1 -1
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +1 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +2 -1
- package/docs/concepts/05-type-driven-design/index.md +2 -2
- package/docs/concepts.llms.md +71 -25
- package/instructions/coding-conventions.md +2 -2
- package/package.json +17 -14
- package/skills/http-client/SKILL.md +1 -1
- package/skills/http-client/references/configuration.md +3 -1
- package/skills/http-client/references/examples/client-expectations.ts +11 -10
- package/skills/http-client/references/examples/client-streams.ts +2 -2
- package/skills/http-client/references/examples/external-client.ts +2 -2
- package/skills/http-client/references/responses.md +1 -1
- package/skills/http-server/SKILL.md +4 -9
- package/skills/http-server/references/examples/authentication.ts +2 -2
- package/skills/http-server/references/examples/inferred-client.ts +54 -0
- package/skills/http-server/references/examples/minimal-route.ts +2 -3
- package/skills/http-server/references/examples/protected-route.ts +4 -6
- package/skills/http-server/references/examples/rename-user-route.ts +4 -6
- package/skills/http-server/references/examples/user-checker.ts +2 -2
- package/skills/http-server/references/examples/user-route.ts +12 -5
- package/skills/http-server/references/initialization.md +1 -1
- package/skills/http-server/references/reusable-flows.md +3 -3
- package/skills/http-server/references/routes-and-floor.md +11 -3
- package/dist/bin/install/index.d.ts +0 -2
- package/docs/concepts/02-server/20-http/50-codegen.ts +0 -29
- package/skills/http-server/references/code-generation.md +0 -31
- package/skills/http-server/references/examples/generate-sdk.ts +0 -36
- /package/dist/bin/{install → installSkill}/skill.d.ts +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
### Constantes et types de DPrinter
|
|
2
|
+
|
|
3
|
+
Les enums publiques sélectionnent les fins de ligne et les unités d'indentation, tandis que les types décrivent les paramètres et les valeurs acceptées par les fonctions de rendu.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
`Indent` est une enum créée avec `DCommon.createEnum`, qui propose `tab`, `space1`, `space2`, `space3` et `space4`. `Back` propose `LF` et `CRLF`. Les types du même nom représentent leurs valeurs respectives. Ces enums ne produisent pas de texte : leur interprétation appartient aux fonctions de rendu.
|
|
8
|
+
|
|
9
|
+
`RenderLineParams` expose un `joinCharacter` optionnel, égal à une espace par défaut. `RenderParagraphParams` expose un `back` optionnel, égal à `Back.LF` par défaut ; le séparateur du paragraphe est exclusivement cette fin de ligne.
|
|
10
|
+
|
|
11
|
+
Les deux fonctions acceptent un `indent` optionnel, sélectionné avec `Indent`, et un `indentLevel` optionnel, égal à `0` par défaut. Sans type ou sans quantité, aucune indentation n'est ajoutée. La quantité multiplie l'unité choisie : `Indent.space2` avec `indentLevel: 3` produit six espaces. Les quantités négatives ou non finies désactivent l'indentation ; les fractions positives sont tronquées.
|
|
12
|
+
|
|
13
|
+
`renderLine` préfixe uniquement le début du texte assemblé. `renderParagraph` préfixe chaque ligne, y compris celles déjà présentes dans les chaînes d'entrée, en préservant leurs fins de ligne. Un tableau sans valeur rendable produit toujours une chaîne vide.
|
|
14
|
+
|
|
15
|
+
La constante `dash` vaut `"-"`.
|
|
16
|
+
|
|
17
|
+
`Colors` est l’union des couleurs ANSI disponibles : `"red"`, `"green"`, `"yellow"`, `"blue"`, `"magenta"`, `"cyan"` et `"gray"`. Les fonctions `colorized` et `colorizedBold` utilisent cette union pour sélectionner leur couleur.
|
|
18
|
+
|
|
19
|
+
`RenderInput` décrit les valeurs acceptées par les fonctions de rendu : `string | boolean | null | undefined | readonly RenderInput[]`. Les tableaux peuvent contenir récursivement d’autres tableaux. À l’exécution, les tableaux imbriqués sont parcourus, `true` est rendu sous la forme `"true"`, tandis que `false`, `null` et `undefined` sont ignorés.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DPrinter.renderLine
|
|
3
|
+
*
|
|
4
|
+
* Assembler récursivement des valeurs en séparant les éléments par une espace.
|
|
5
|
+
*/
|
|
6
|
+
import * as DPrinter from "@duplojs/lang/printer";
|
|
7
|
+
import type * as DCommon from "@duplojs/lang/common";
|
|
8
|
+
|
|
9
|
+
const line = DPrinter.renderLine(["Nom", [true, "Ada"], false]);
|
|
10
|
+
|
|
11
|
+
// La valeur obtenue est "Nom true Ada" ; false ne produit aucun texte.
|
|
12
|
+
type _CheckLine = DCommon.ExpectType<typeof line, string, "strict">;
|
|
13
|
+
|
|
14
|
+
const indentedLine = DPrinter.renderLine(["Nom", "Ada"], {
|
|
15
|
+
indent: DPrinter.Indent.space2,
|
|
16
|
+
indentLevel: 1,
|
|
17
|
+
});
|
|
18
|
+
// La valeur obtenue est " Nom Ada" : l'indentation préfixe la ligne une seule fois.
|
|
19
|
+
type _CheckIndentedLine = DCommon.ExpectType<typeof indentedLine, string, "strict">;
|
|
20
|
+
|
|
21
|
+
// Un séparateur personnalisé permet notamment d'assembler des fragments sans espace.
|
|
22
|
+
const compact = DPrinter.renderLine(["Nom", ": ", "Ada"], {
|
|
23
|
+
joinCharacter: "",
|
|
24
|
+
indent: DPrinter.Indent.tab,
|
|
25
|
+
indentLevel: 2,
|
|
26
|
+
});
|
|
27
|
+
// La valeur obtenue est "\t\tNom: Ada".
|
|
28
|
+
type _CheckCompact = DCommon.ExpectType<typeof compact, string, "strict">;
|
|
29
|
+
|
|
30
|
+
// Une chaîne multiligne conserve ses lignes suivantes sans indentation ajoutée.
|
|
31
|
+
const multiline = DPrinter.renderLine(["Nom\nAda"], {
|
|
32
|
+
indent: DPrinter.Indent.space2,
|
|
33
|
+
indentLevel: 1,
|
|
34
|
+
});
|
|
35
|
+
// La valeur obtenue est " Nom\nAda".
|
|
36
|
+
type _CheckMultiline = DCommon.ExpectType<typeof multiline, string, "strict">;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DPrinter.renderParagraph
|
|
3
|
+
*
|
|
4
|
+
* Assembler récursivement des valeurs en séparant les éléments par un saut de ligne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DPrinter from "@duplojs/lang/printer";
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
|
+
|
|
9
|
+
const paragraph = DPrinter.renderParagraph([
|
|
10
|
+
"Première ligne",
|
|
11
|
+
["Deuxième ligne", false],
|
|
12
|
+
"Troisième ligne",
|
|
13
|
+
]);
|
|
14
|
+
|
|
15
|
+
// La valeur obtenue est "Première ligne\nDeuxième ligne\nTroisième ligne".
|
|
16
|
+
type _CheckParagraph = DCommon.ExpectType<typeof paragraph, string, "strict">;
|
|
17
|
+
|
|
18
|
+
// Le rendu direct permet de choisir CRLF et une indentation par ligne.
|
|
19
|
+
const windowsParagraph = DPrinter.renderParagraph(["Première", "Deuxième"], {
|
|
20
|
+
back: DPrinter.Back.CRLF,
|
|
21
|
+
indent: DPrinter.Indent.tab,
|
|
22
|
+
indentLevel: 1,
|
|
23
|
+
});
|
|
24
|
+
// La valeur obtenue est "\tPremière\r\n\tDeuxième".
|
|
25
|
+
type _CheckWindowsParagraph = DCommon.ExpectType<typeof windowsParagraph, string, "strict">;
|
|
26
|
+
|
|
27
|
+
// La forme curifiée configure le rendu avant de recevoir les valeurs du pipe.
|
|
28
|
+
const spacedParagraph = DCommon.pipe(
|
|
29
|
+
["Première", ["Deuxième", false]],
|
|
30
|
+
DPrinter.renderParagraph({
|
|
31
|
+
back: DPrinter.Back.LF,
|
|
32
|
+
indent: DPrinter.Indent.space2,
|
|
33
|
+
indentLevel: 1,
|
|
34
|
+
}),
|
|
35
|
+
);
|
|
36
|
+
// La valeur obtenue est " Première\n Deuxième".
|
|
37
|
+
type _CheckSpacedParagraph = DCommon.ExpectType<typeof spacedParagraph, string, "strict">;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## DPrinter
|
|
2
|
+
|
|
3
|
+
Fonctions et constantes pour assembler du texte, formater des lignes et paragraphes, ajouter une indentation ou des styles ANSI.
|
|
4
|
+
|
|
5
|
+
### [Constantes et types de DPrinter](10-primitives.md)
|
|
6
|
+
|
|
7
|
+
Les enums publiques sélectionnent les fins de ligne et les unités d'indentation, tandis que les types décrivent les paramètres et les valeurs acceptées par les fonctions de rendu.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### [DPrinter.bold](10-bold.ts)
|
|
11
|
+
|
|
12
|
+
Encadrer une chaîne par les codes ANSI de mise en gras.
|
|
13
|
+
|
|
14
|
+
### [DPrinter.colorized](10-colorized.ts)
|
|
15
|
+
|
|
16
|
+
Encadrer une chaîne par les codes ANSI d’une couleur sélectionnée.
|
|
17
|
+
|
|
18
|
+
### [DPrinter.colorizedBold](10-colorizedBold.ts)
|
|
19
|
+
|
|
20
|
+
Appliquer une couleur ANSI et le style gras à une chaîne.
|
|
21
|
+
|
|
22
|
+
### [DPrinter.renderLine](10-renderLine.ts)
|
|
23
|
+
|
|
24
|
+
Assembler récursivement des valeurs en séparant les éléments par une espace.
|
|
25
|
+
|
|
26
|
+
### [DPrinter.renderParagraph](10-renderParagraph.ts)
|
|
27
|
+
|
|
28
|
+
Assembler récursivement des valeurs en séparant les éléments par un saut de ligne.
|
|
29
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.at
|
|
3
|
+
*
|
|
4
|
+
* Lire le caractère situé à un index, avec `undefined` lorsque l'index est hors limites.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.at("hello", 1);
|
|
10
|
+
// La valeur obtenue est "e".
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, "e", "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"hello",
|
|
15
|
+
DString.at(1),
|
|
16
|
+
);
|
|
17
|
+
// La forme curifiée s'intègre dans un pipe et conserve le caractère "e".
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, "e", "strict">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.capitalize
|
|
3
|
+
*
|
|
4
|
+
* Mettre en majuscule le premier caractère d'une chaîne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.capitalize("duplo");
|
|
10
|
+
// La valeur obtenue est "Duplo".
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, "Duplo", "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"duplo",
|
|
15
|
+
DString.capitalize,
|
|
16
|
+
);
|
|
17
|
+
// La fonction unaire peut être passée directement au pipe.
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, "Duplo", "strict">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.charAt
|
|
3
|
+
*
|
|
4
|
+
* Lire le caractère situé à un index positif ou nul.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.charAt("hello", 1);
|
|
10
|
+
// La valeur obtenue est une chaîne d'au plus un caractère, ici "e".
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, string & DString.MaxCharacters<1>, "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"hello",
|
|
15
|
+
DString.charAt(1),
|
|
16
|
+
);
|
|
17
|
+
// La forme curifiée conserve la garantie de longueur maximale.
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, string & DString.MaxCharacters<1>, "strict">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.concat
|
|
3
|
+
*
|
|
4
|
+
* Ajouter une ou plusieurs chaînes à la fin d'une chaîne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.concat("hello", " ", "world");
|
|
10
|
+
// La valeur obtenue est "hello world".
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, "hello world", "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"hello",
|
|
15
|
+
DString.concat(" "),
|
|
16
|
+
);
|
|
17
|
+
// La forme curifiée fixe l'élément ajouté dans l'étape du pipe.
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, "hello ", "strict">;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.endsWith
|
|
3
|
+
*
|
|
4
|
+
* Tester si une chaîne se termine par une sous-chaîne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
const result = DString.endsWith("user-api", "api");
|
|
11
|
+
// La valeur obtenue est true.
|
|
12
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
|
+
|
|
14
|
+
declare const value: string;
|
|
15
|
+
|
|
16
|
+
if (DString.endsWith(value, "api")) {
|
|
17
|
+
type _CheckIfValue = DCommon.ExpectType<typeof value, `${string}api`, "strict">;
|
|
18
|
+
const length = DString.length(value);
|
|
19
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const transformed = DCommon.pipe(
|
|
23
|
+
value,
|
|
24
|
+
DCommon.when(
|
|
25
|
+
DString.endsWith("api"),
|
|
26
|
+
(value) => {
|
|
27
|
+
type _CheckValue = DCommon.ExpectType<typeof value, `${string}api`, "strict">;
|
|
28
|
+
return DString.length(value);
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
// La branche vraie peut exploiter la chaîne affinée pour calculer sa longueur.
|
|
33
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.extract
|
|
3
|
+
*
|
|
4
|
+
* Extraire la première occurrence d'un motif avec ses groupes et sa position.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.extract("order-42", /(?<kind>order)-(?<id>\d+)/);
|
|
10
|
+
// Le résultat contient la correspondance, les groupes, les groupes nommés, la position et la chaîne source.
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, DString.ExtractOutput<"order-42"> | undefined, "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"order-42",
|
|
15
|
+
DString.extract(/\d+/),
|
|
16
|
+
);
|
|
17
|
+
// La forme curifiée recherche le même motif sur la chaîne reçue par le pipe.
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, DString.ExtractOutput<"order-42"> | undefined, "strict">;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.extractAll
|
|
3
|
+
*
|
|
4
|
+
* Produire les occurrences d'un motif global sous forme de génératrice.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.extractAll("order-42/order-43", /order-\d+/g);
|
|
10
|
+
// La génératrice produit un objet d'extraction pour chaque occurrence.
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, Generator<DString.ExtractOutput<"order-42/order-43">>, "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"order-42/order-43",
|
|
15
|
+
DString.extractAll(/order-\d+/g),
|
|
16
|
+
);
|
|
17
|
+
// La forme curifiée conserve le type de la chaîne d'origine dans chaque extraction.
|
|
18
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, Generator<DString.ExtractOutput<"order-42/order-43">>, "strict">;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.first
|
|
3
|
+
*
|
|
4
|
+
* Lire le premier caractère d'une chaîne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.first("hello");
|
|
10
|
+
// La valeur obtenue est "h".
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, "h", "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"hello",
|
|
15
|
+
DString.first,
|
|
16
|
+
);
|
|
17
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, "h", "strict">;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.includes
|
|
3
|
+
*
|
|
4
|
+
* Tester si une chaîne contient une sous-chaîne.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
const result = DString.includes("hello world", "world");
|
|
11
|
+
// La valeur obtenue est true.
|
|
12
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
|
+
|
|
14
|
+
declare const value: string;
|
|
15
|
+
|
|
16
|
+
if (DString.includes(value, "world")) {
|
|
17
|
+
type _CheckIfValue = DCommon.ExpectType<typeof value, `${string}world${string}`, "strict">;
|
|
18
|
+
const length = DString.length(value);
|
|
19
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const transformed = DCommon.pipe(
|
|
23
|
+
value,
|
|
24
|
+
DCommon.when(
|
|
25
|
+
DString.includes("world"),
|
|
26
|
+
(value) => {
|
|
27
|
+
type _CheckValue = DCommon.ExpectType<typeof value, `${string}world${string}`, "strict">;
|
|
28
|
+
return DString.length(value);
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
// La branche vraie peut exploiter la chaîne affinée pour calculer sa longueur.
|
|
33
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.indexOf
|
|
3
|
+
*
|
|
4
|
+
* Retourner la position d'une sous-chaîne, ou `undefined` si elle est absente.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const result = DString.indexOf("hello world", "world");
|
|
10
|
+
// La valeur obtenue est 6.
|
|
11
|
+
type _CheckResult = DCommon.ExpectType<typeof result, number | undefined, "strict">;
|
|
12
|
+
|
|
13
|
+
const piped = DCommon.pipe(
|
|
14
|
+
"hello world",
|
|
15
|
+
DString.indexOf("world"),
|
|
16
|
+
);
|
|
17
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, number | undefined, "strict">;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isComposedOf
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne ne contient que des caractères appartenant à une ou plusieurs plages.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
const result = DString.isComposedOf("abc123", ["a-z", "0-9"]);
|
|
11
|
+
// La valeur obtenue est true.
|
|
12
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
|
+
|
|
14
|
+
declare const value: string;
|
|
15
|
+
|
|
16
|
+
if (DString.isComposedOf(value, "a-z")) {
|
|
17
|
+
type _CheckIfValue = DCommon.ExpectType<typeof value, string & DString.AllowedCharacters<"a-z">, "strict">;
|
|
18
|
+
const length = DString.length(value);
|
|
19
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const transformed = DCommon.pipe(
|
|
23
|
+
value,
|
|
24
|
+
DCommon.when(
|
|
25
|
+
DString.isComposedOf("a-z"),
|
|
26
|
+
(value) => {
|
|
27
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.AllowedCharacters<"a-z">, "strict">;
|
|
28
|
+
return DString.length(value);
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
// La branche vraie peut exploiter la chaîne affinée pour calculer sa longueur.
|
|
33
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isEmail
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne respecte le format d'une adresse e-mail.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DArray from "@duplojs/lang/array";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
declare const value: string;
|
|
11
|
+
|
|
12
|
+
if (DString.isEmail(value)) {
|
|
13
|
+
// Le test établit la contrainte Email dans cette branche.
|
|
14
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.Email, "strict">;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const result = DString.isEmail("contact@duplojs.dev");
|
|
18
|
+
// La valeur obtenue est true.
|
|
19
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
20
|
+
|
|
21
|
+
// `Email` est établi dans la branche, mais `split` ne peut pas déduire le séparateur
|
|
22
|
+
// depuis cette contrainte : pour une entrée typée `string`, il garantit au moins un fragment.
|
|
23
|
+
const emailParts = DString.split(value, "@");
|
|
24
|
+
type _CheckEmailParts = DCommon.ExpectType<
|
|
25
|
+
typeof emailParts,
|
|
26
|
+
readonly string[] & DArray.MinElements<1>,
|
|
27
|
+
"strict"
|
|
28
|
+
>;
|
|
29
|
+
|
|
30
|
+
if (DString.isEmail(value)) {
|
|
31
|
+
type _CheckEmail = DCommon.ExpectType<typeof value, string & DString.Email, "strict">;
|
|
32
|
+
const parts = DString.split(value, "@");
|
|
33
|
+
type _CheckParts = DCommon.ExpectType<
|
|
34
|
+
typeof parts,
|
|
35
|
+
readonly string[] & DArray.MinElements<2>,
|
|
36
|
+
"strict"
|
|
37
|
+
>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Le même contrôle s’insère dans un pipe ; la longueur des fragments reste garantie.
|
|
41
|
+
const partCount = DCommon.pipe(
|
|
42
|
+
value,
|
|
43
|
+
DCommon.when(
|
|
44
|
+
DString.isEmail,
|
|
45
|
+
(email) => {
|
|
46
|
+
type _CheckEmail = DCommon.ExpectType<typeof email, string & DString.Email, "strict">;
|
|
47
|
+
|
|
48
|
+
return DString.split(email, "@");
|
|
49
|
+
},
|
|
50
|
+
),
|
|
51
|
+
);
|
|
52
|
+
type _CheckPartCount = DCommon.ExpectType<
|
|
53
|
+
typeof partCount,
|
|
54
|
+
string | (readonly string[] & DArray.MinElements<2>),
|
|
55
|
+
"strict"
|
|
56
|
+
>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isIn
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne appartient à une collection de valeurs autorisées.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
declare const values: readonly ["draft", "published"];
|
|
11
|
+
const result = DString.isIn("draft", values);
|
|
12
|
+
// La valeur obtenue est true.
|
|
13
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
14
|
+
|
|
15
|
+
declare const value: string;
|
|
16
|
+
|
|
17
|
+
if (DString.isIn(value, values)) {
|
|
18
|
+
type _CheckIfValue = DCommon.ExpectType<typeof value, "draft" | "published", "strict">;
|
|
19
|
+
const length = DString.length(value);
|
|
20
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const transformed = DCommon.pipe(
|
|
24
|
+
value,
|
|
25
|
+
DCommon.when(
|
|
26
|
+
DString.isIn(values),
|
|
27
|
+
(value) => {
|
|
28
|
+
type _CheckValue = DCommon.ExpectType<typeof value, "draft" | "published", "strict">;
|
|
29
|
+
return DString.length(value);
|
|
30
|
+
},
|
|
31
|
+
),
|
|
32
|
+
);
|
|
33
|
+
// La branche vraie peut exploiter la valeur réduite à l'union autorisée.
|
|
34
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isKeyof
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une valeur est une clé de l'objet fourni et affiner son type.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
const source = {
|
|
11
|
+
name: "Alice",
|
|
12
|
+
email: "alice@example.com",
|
|
13
|
+
};
|
|
14
|
+
const result = DString.isKeyof("name", source);
|
|
15
|
+
// La valeur obtenue est true.
|
|
16
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
17
|
+
|
|
18
|
+
declare const key: string;
|
|
19
|
+
|
|
20
|
+
if (DString.isKeyof(key, source)) {
|
|
21
|
+
type _CheckIfKey = DCommon.ExpectType<typeof key, "name" | "email", "strict">;
|
|
22
|
+
const length = DString.length(key);
|
|
23
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const transformed = DCommon.pipe(
|
|
27
|
+
key,
|
|
28
|
+
DCommon.when(
|
|
29
|
+
DString.isKeyof(source),
|
|
30
|
+
(key) => {
|
|
31
|
+
type _CheckKey = DCommon.ExpectType<typeof key, "name" | "email", "strict">;
|
|
32
|
+
return DString.length(key);
|
|
33
|
+
},
|
|
34
|
+
),
|
|
35
|
+
);
|
|
36
|
+
// La branche vraie peut exploiter la clé réduite aux propriétés de l'objet.
|
|
37
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isNotEmpty
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne contient au moins un caractère.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
declare const value: string;
|
|
11
|
+
|
|
12
|
+
if (DString.isNotEmpty(value)) {
|
|
13
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.NotEmpty, "strict">;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const result = DString.isNotEmpty("DuploJS");
|
|
17
|
+
// La valeur obtenue est true.
|
|
18
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
19
|
+
|
|
20
|
+
// Le predicate unaire s’utilise aussi dans un pipe pour mesurer la chaîne validée.
|
|
21
|
+
const length = DCommon.pipe(
|
|
22
|
+
value,
|
|
23
|
+
DCommon.when(
|
|
24
|
+
DString.isNotEmpty,
|
|
25
|
+
(nonEmpty) => {
|
|
26
|
+
type _CheckValue = DCommon.ExpectType<typeof nonEmpty, string & DString.NotEmpty, "strict">;
|
|
27
|
+
|
|
28
|
+
return DString.length(nonEmpty);
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
type _CheckLength = DCommon.ExpectType<typeof length, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isNumber
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne représente un nombre et établir cette contrainte dans le type.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
declare const value: string;
|
|
11
|
+
|
|
12
|
+
if (DString.isNumber(value)) {
|
|
13
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.Number, "strict">;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const result = DString.isNumber("42.5");
|
|
17
|
+
// La valeur obtenue est true.
|
|
18
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
19
|
+
|
|
20
|
+
// Le predicate unaire peut aussi s’utiliser directement dans DCommon.when.
|
|
21
|
+
const normalized = DCommon.pipe(
|
|
22
|
+
value,
|
|
23
|
+
DCommon.when(
|
|
24
|
+
DString.isNumber,
|
|
25
|
+
(numberString) => {
|
|
26
|
+
type _CheckNumberString = DCommon.ExpectType<typeof numberString, string & DString.Number, "strict">;
|
|
27
|
+
|
|
28
|
+
return DString.length(numberString);
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
);
|
|
32
|
+
type _CheckNormalized = DCommon.ExpectType<typeof normalized, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isTrimmed
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne ne possède pas d'espace superflu à ses extrémités.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
9
|
+
|
|
10
|
+
declare const value: string;
|
|
11
|
+
|
|
12
|
+
if (DString.isTrimmed(value)) {
|
|
13
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.Trimmed, "strict">;
|
|
14
|
+
const length = DString.length(value);
|
|
15
|
+
type _CheckLength = DCommon.ExpectType<typeof length, number & DNumber.Positive, "strict">;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const result = DString.isTrimmed("DuploJS");
|
|
19
|
+
// La valeur obtenue est true.
|
|
20
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
21
|
+
|
|
22
|
+
const length = DCommon.pipe(
|
|
23
|
+
value,
|
|
24
|
+
DCommon.when(
|
|
25
|
+
DString.isTrimmed,
|
|
26
|
+
(trimmed) => {
|
|
27
|
+
type _CheckTrimmed = DCommon.ExpectType<typeof trimmed, string & DString.Trimmed, "strict">;
|
|
28
|
+
|
|
29
|
+
return DString.length(trimmed);
|
|
30
|
+
},
|
|
31
|
+
),
|
|
32
|
+
);
|
|
33
|
+
type _CheckLength = DCommon.ExpectType<typeof length, string | (number & DNumber.Positive), "strict">;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DString.isUrl
|
|
3
|
+
*
|
|
4
|
+
* Vérifier qu'une chaîne est une URL valide.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
declare const value: string;
|
|
10
|
+
|
|
11
|
+
if (DString.isUrl(value)) {
|
|
12
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string & DString.Url, "strict">;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const result = DString.isUrl("https://duplojs.dev");
|
|
16
|
+
// La valeur obtenue est true.
|
|
17
|
+
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
18
|
+
|
|
19
|
+
// Le predicate unaire s’utilise aussi dans un pipe pour normaliser l’URL validée.
|
|
20
|
+
const normalized = DCommon.pipe(
|
|
21
|
+
value,
|
|
22
|
+
DCommon.when(
|
|
23
|
+
DString.isUrl,
|
|
24
|
+
(url) => {
|
|
25
|
+
type _CheckUrl = DCommon.ExpectType<typeof url, string & DString.Url, "strict">;
|
|
26
|
+
|
|
27
|
+
return DString.toLowerCase(url);
|
|
28
|
+
},
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
type _CheckNormalized = DCommon.ExpectType<typeof normalized, string, "strict">;
|