@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
package/README.md
CHANGED
|
@@ -14,24 +14,24 @@ Read the relevant pages by resolving their links relative to the summary. Before
|
|
|
14
14
|
|
|
15
15
|
Use each API domain's `index.llms.md` to find a public function by its exported namespace and name, such as `DArray.map` in [`docs/API/10-lang/10-array/index.llms.md`](docs/API/10-lang/10-array/index.llms.md). The other current domains are [Chrono](docs/API/10-lang/10-chrono/index.llms.md), [Common](docs/API/10-lang/10-common/index.llms.md), [DataStructure](docs/API/10-lang/10-dataStructure/index.llms.md), [Either](docs/API/10-lang/10-either/index.llms.md), and [Generator](docs/API/10-lang/10-generator/index.llms.md). API sources are primarily TypeScript files combining descriptions and typed usage examples. Each summary exposes their headers and links to those files.
|
|
16
16
|
|
|
17
|
-
The `install` command creates symbolic links to the package's skills by default.
|
|
17
|
+
The `install-skill` command creates symbolic links to the package's skills by default.
|
|
18
18
|
The boolean `--copy` option copies the skills instead.
|
|
19
19
|
Each installation removes the skill's destination and replaces it with the requested copy or link. The target of any existing symbolic link is preserved.
|
|
20
20
|
|
|
21
21
|
```sh
|
|
22
|
-
pnpm exec duplojs-agents-kit install
|
|
23
|
-
pnpm exec duplojs-agents-kit install http-server --type codex
|
|
24
|
-
pnpm exec duplojs-agents-kit install http-client --copy
|
|
25
|
-
pnpm exec duplojs-agents-kit install command --type codex
|
|
26
|
-
pnpm exec duplojs-agents-kit install server --type codex
|
|
27
|
-
pnpm exec duplojs-agents-kit install modeling --type codex
|
|
28
|
-
pnpm exec duplojs-agents-kit install test --type codex
|
|
22
|
+
pnpm exec duplojs-agents-kit install-skill
|
|
23
|
+
pnpm exec duplojs-agents-kit install-skill http-server --type codex
|
|
24
|
+
pnpm exec duplojs-agents-kit install-skill http-client --copy
|
|
25
|
+
pnpm exec duplojs-agents-kit install-skill command --type codex
|
|
26
|
+
pnpm exec duplojs-agents-kit install-skill server --type codex
|
|
27
|
+
pnpm exec duplojs-agents-kit install-skill modeling --type codex
|
|
28
|
+
pnpm exec duplojs-agents-kit install-skill test --type codex
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Two independently installable skills cover HTTP:
|
|
32
32
|
|
|
33
|
-
- `http-server` (`duplojs-http-server`) guides server setup, routes, reusable flows
|
|
34
|
-
- `http-client` (`duplojs-http-client`) guides typed calls to DuploJS or external APIs, response expectations, hooks, Predicted mode, SSE, and streams.
|
|
33
|
+
- `http-server` (`duplojs-http-server`) guides server setup, routes, and reusable flows.
|
|
34
|
+
- `http-client` (`duplojs-http-client`) guides typed calls to DuploJS or external APIs, response expectations, hooks, Predicted mode, SSE, and streams.
|
|
35
35
|
|
|
36
36
|
The `server` skill (`duplojs-server`) guides filesystem operations, typed I/O errors, file and folder structures, environment configuration, and process capabilities through `@duplojs/server`. It prioritizes the package's runtime abstractions and distinguishes the process working directory from the module directory.
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ The `modeling` skill (`duplojs-modeling`) guides business system modeling and im
|
|
|
39
39
|
|
|
40
40
|
The `test` skill (`duplojs-test`) guides testing DuploJS results and type contracts, selecting expected Either information, monitoring new result variants with exhaustive selectors, and isolating server dependencies through `TESTImplementation`. It also points to the concepts for organizing E2E tests with `@duplojs/playwright`.
|
|
41
41
|
|
|
42
|
-
The `command` skill guides the creation of typed CLI commands with `@duplojs/server/command`, including arguments, options, subcommands, help, and executable entry points. Running `install` without a skill installs all supported skills. References and checked TypeScript examples are included in both copied and linked installations.
|
|
42
|
+
The `command` skill guides the creation of typed CLI commands with `@duplojs/server/command`, including arguments, options, subcommands, help, and executable entry points. Running `install-skill` without a skill installs all supported skills. References and checked TypeScript examples are included in both copied and linked installations.
|
|
43
43
|
|
|
44
44
|
The `setup` command creates `AGENTS.md` by default, or `CLAUDE.md` with `--type claude`, in the current project if needed and synchronizes a marked coding conventions block while preserving the surrounding content:
|
|
45
45
|
|
package/dist/bin/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { installSkillCommand } from "./installSkill/index.mjs";
|
|
3
3
|
import { setupCommand } from "./setup/index.mjs";
|
|
4
4
|
import * as DSCommand from "@duplojs/server/command";
|
|
5
5
|
//#region scripts/bin/index.ts
|
|
6
|
-
await DSCommand.exec({ subjects: [
|
|
6
|
+
await DSCommand.exec({ subjects: [installSkillCommand, setupCommand] }, () => {});
|
|
7
7
|
//#endregion
|
|
@@ -7,8 +7,8 @@ import * as DPath from "@duplojs/lang/path";
|
|
|
7
7
|
import * as DSFile from "@duplojs/server/file";
|
|
8
8
|
import * as DEither from "@duplojs/lang/either";
|
|
9
9
|
import * as DArray from "@duplojs/lang/array";
|
|
10
|
-
//#region scripts/bin/
|
|
11
|
-
const
|
|
10
|
+
//#region scripts/bin/installSkill/index.ts
|
|
11
|
+
const installSkillCommand = DSCommand.create("install-skill", {
|
|
12
12
|
options: [DSCommand.createBooleanOption("copy", { description: "Copy skills instead of creating symbolic links" }), DSCommand.createOption("type", DDataStructure.literal(AgentTypeEnum.toTuple()))],
|
|
13
13
|
subjects: [DSCommand.createArgument("skill", DDataStructure.literal(SkillEnum.toTuple()), { optional: true })]
|
|
14
14
|
}, async ({ args, options }) => {
|
|
@@ -22,4 +22,4 @@ const installCommand = DSCommand.create("install", {
|
|
|
22
22
|
await DEither.rightAsyncPipe(DSFile.readDirectory(skillsPath), DArray.filter(SkillEnum.has), DArray.map((value) => installSkill(agentType, value)), DCommon.promiseAll);
|
|
23
23
|
});
|
|
24
24
|
//#endregion
|
|
25
|
-
export {
|
|
25
|
+
export { installSkillCommand };
|
|
@@ -5,7 +5,7 @@ import * as DSCommon from "@duplojs/server/common";
|
|
|
5
5
|
import * as DSFile from "@duplojs/server/file";
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import * as DPattern from "@duplojs/lang/pattern";
|
|
8
|
-
//#region scripts/bin/
|
|
8
|
+
//#region scripts/bin/installSkill/skill.ts
|
|
9
9
|
const AgentTypeEnum = DCommon.createEnum([
|
|
10
10
|
"default",
|
|
11
11
|
"claude",
|
|
@@ -4,5 +4,5 @@ import type * as DPath from "@duplojs/lang/path";
|
|
|
4
4
|
declare const InvalidInstructionsMarkersError_base: abstract new (error: string) => DCommon.DuploJSError<"agents-kit-invalid-instructions-markers", string> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-agents-kit-invalid-instructions-markers", unknown>>, unknown>;
|
|
5
5
|
export declare class InvalidInstructionsMarkersError extends InvalidInstructionsMarkersError_base {
|
|
6
6
|
}
|
|
7
|
-
export declare function synchronizeInstructions(content: string, instructions: string, packagePath:
|
|
7
|
+
export declare function synchronizeInstructions(content: string, instructions: string, packagePath: DPath.AnyPath): DEither.Left<"agents-kit-invalid-instructions-markers", InvalidInstructionsMarkersError> | DEither.Success<string>;
|
|
8
8
|
export {};
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
import * as DArray from "@duplojs/lang/array";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const colors
|
|
9
|
+
declare const colors: readonly ["red", "green", "blue"];
|
|
10
10
|
|
|
11
11
|
// Appel classique : l’index couvert renvoie l’union des éléments du tableau.
|
|
12
12
|
const color = DArray.at(colors, 1);
|
|
13
13
|
|
|
14
|
-
// La valeur obtenue est
|
|
14
|
+
// La valeur obtenue est l’un des trois éléments du tuple.
|
|
15
15
|
type _CheckColor = DCommon.ExpectType<
|
|
16
16
|
typeof color,
|
|
17
17
|
"red" | "green" | "blue",
|
|
@@ -24,7 +24,7 @@ const firstColor = DCommon.pipe(
|
|
|
24
24
|
DArray.at(0),
|
|
25
25
|
);
|
|
26
26
|
|
|
27
|
-
// La valeur obtenue est
|
|
27
|
+
// La valeur obtenue est le premier élément du tuple.
|
|
28
28
|
type _CheckFirstColor = DCommon.ExpectType<
|
|
29
29
|
typeof firstColor,
|
|
30
30
|
"red" | "green" | "blue",
|
|
@@ -34,7 +34,7 @@ type _CheckFirstColor = DCommon.ExpectType<
|
|
|
34
34
|
// Un index littéral hors limites est identifié statiquement.
|
|
35
35
|
const missingColor = DArray.at(colors, 3);
|
|
36
36
|
|
|
37
|
-
//
|
|
37
|
+
// Un index connu hors limites produit undefined.
|
|
38
38
|
type _CheckMissingColor = DCommon.ExpectType<
|
|
39
39
|
typeof missingColor,
|
|
40
40
|
undefined,
|
|
@@ -13,7 +13,8 @@ const value = DArray.coalescing(42);
|
|
|
13
13
|
type _CheckValue = DCommon.ExpectType<typeof value, readonly [42], "strict">;
|
|
14
14
|
|
|
15
15
|
// Un tableau est conservé avec sa forme et ses éléments.
|
|
16
|
-
const
|
|
16
|
+
declare const input: readonly [1, 2];
|
|
17
|
+
const array = DArray.coalescing(input);
|
|
17
18
|
|
|
18
19
|
// La valeur obtenue est [1, 2].
|
|
19
|
-
type _CheckArray = DCommon.ExpectType<typeof array, [1, 2], "strict">;
|
|
20
|
+
type _CheckArray = DCommon.ExpectType<typeof array, readonly [1, 2], "strict">;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as DArray from "@duplojs/lang/array";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const values = ["a", "b", "a"]
|
|
9
|
+
const values = ["a", "b", "a"];
|
|
10
10
|
|
|
11
11
|
// Appel classique : la recherche commence au début par défaut.
|
|
12
12
|
const result = DArray.indexOf(values, "a");
|
|
@@ -4,12 +4,26 @@
|
|
|
4
4
|
* Vérifier au runtime qu’une valeur est un tableau et affiner son type TypeScript.
|
|
5
5
|
*/
|
|
6
6
|
import * as DArray from "@duplojs/lang/array";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
declare const input:
|
|
9
|
+
declare const input: DCommon.AnyValue;
|
|
10
10
|
|
|
11
11
|
// Le test runtime réussit uniquement pour une valeur qui est effectivement un tableau.
|
|
12
12
|
if (DArray.is(input)) {
|
|
13
13
|
// Dans cette branche, input est affiné en tableau de valeurs inconnues.
|
|
14
|
-
type _CheckInput = DCommon.ExpectType<typeof input,
|
|
14
|
+
type _CheckInput = DCommon.ExpectType<typeof input, DCommon.AnyValue[], "strict">;
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
// Dans un pipe, le même predicate unaire fournit le tableau à l’étape de traitement.
|
|
18
|
+
const first = DCommon.pipe(
|
|
19
|
+
input,
|
|
20
|
+
DCommon.when(
|
|
21
|
+
DArray.is,
|
|
22
|
+
(array) => {
|
|
23
|
+
type _CheckArray = DCommon.ExpectType<typeof array, DCommon.AnyValue[], "strict">;
|
|
24
|
+
|
|
25
|
+
return DArray.first(array);
|
|
26
|
+
},
|
|
27
|
+
),
|
|
28
|
+
);
|
|
29
|
+
type _CheckFirst = DCommon.ExpectType<typeof first, DCommon.AnyValue | undefined, "strict">;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as DArray from "@duplojs/lang/array";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const values = ["a", "b", "a"]
|
|
9
|
+
const values = ["a", "b", "a"];
|
|
10
10
|
|
|
11
11
|
// Appel classique : la recherche commence à la fin par défaut.
|
|
12
12
|
const result = DArray.lastIndexOf(values, "a");
|
|
@@ -15,7 +15,7 @@ type _CheckTime = DCommon.ExpectType<typeof timeResult, DChrono.TheTime, "strict
|
|
|
15
15
|
|
|
16
16
|
// La forme curifiée s’applique aussi dans un pipe.
|
|
17
17
|
const piped = DCommon.pipe(
|
|
18
|
-
"time1000+"
|
|
18
|
+
"time1000+",
|
|
19
19
|
DChrono.addTime("time500+"),
|
|
20
20
|
);
|
|
21
21
|
type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheTime, "strict">;
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const dates
|
|
10
|
-
DChrono.createDate("2021-01-10"),
|
|
11
|
-
DChrono.createDate("2021-01-20"),
|
|
12
|
-
] as const;
|
|
9
|
+
declare const dates: readonly [DChrono.TheDate, DChrono.TheDate];
|
|
13
10
|
const target = DChrono.createDate("2021-01-15");
|
|
14
11
|
|
|
15
12
|
const closest = DChrono.closestTo(dates, target);
|
|
@@ -33,10 +30,10 @@ const piped = DCommon.pipe(
|
|
|
33
30
|
type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheDate | undefined, "strict">;
|
|
34
31
|
|
|
35
32
|
// Les collections peuvent mélanger TheDate et dates sérialisées.
|
|
36
|
-
const mixedDates
|
|
37
|
-
|
|
38
|
-
DChrono.
|
|
39
|
-
]
|
|
33
|
+
declare const mixedDates: readonly [
|
|
34
|
+
DChrono.TheDate | DChrono.SerializedTheDate,
|
|
35
|
+
DChrono.TheDate | DChrono.SerializedTheDate,
|
|
36
|
+
];
|
|
40
37
|
const mixedClosest = DChrono.closestTo(
|
|
41
38
|
mixedDates,
|
|
42
39
|
"date1609804800000+",
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Identifier si une valeur est une instance de TheDate et réduire son type.
|
|
5
5
|
*/
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const value:
|
|
9
|
+
declare const value: DCommon.AnyValue;
|
|
10
10
|
const isDate = DChrono.isDate(value);
|
|
11
11
|
|
|
12
12
|
// Le résultat indique si la valeur est une TheDate.
|
|
@@ -21,3 +21,16 @@ if (DChrono.isDate(value)) {
|
|
|
21
21
|
type _CheckNarrowed = DCommon.ExpectType<typeof timestamp, number, "strict">;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
// Le predicate unaire peut aussi établir TheDate dans le callback d’un pipe.
|
|
25
|
+
const timestamp = DCommon.pipe(
|
|
26
|
+
value,
|
|
27
|
+
DCommon.when(
|
|
28
|
+
DChrono.isDate,
|
|
29
|
+
(date) => {
|
|
30
|
+
type _CheckDate = DCommon.ExpectType<typeof date, DChrono.TheDate, "strict">;
|
|
31
|
+
|
|
32
|
+
return DChrono.toTimestamp(date);
|
|
33
|
+
},
|
|
34
|
+
),
|
|
35
|
+
);
|
|
36
|
+
type _CheckTimestamp = DCommon.ExpectType<typeof timestamp, DCommon.AnyValue, "strict">;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Vérifier qu’une chaîne respecte le format sérialisé sûr d’une TheDate.
|
|
5
5
|
*/
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
9
|
const value = "date1609459200000+";
|
|
10
10
|
const isSerialized = DChrono.isSerializedTheDate(value);
|
|
@@ -24,3 +24,18 @@ if (DChrono.isSerializedTheDate(value)) {
|
|
|
24
24
|
type _CheckNarrowed = DCommon.ExpectType<typeof timestamp, number, "strict">;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
declare const checkedValue: string;
|
|
28
|
+
|
|
29
|
+
// Le pipe valide la chaîne avant de la convertir en timestamp.
|
|
30
|
+
const timestamp = DCommon.pipe(
|
|
31
|
+
checkedValue,
|
|
32
|
+
DCommon.when(
|
|
33
|
+
DChrono.isSerializedTheDate,
|
|
34
|
+
(serializedDate) => {
|
|
35
|
+
type _CheckDate = DCommon.ExpectType<typeof serializedDate, DChrono.SerializedTheDate, "strict">;
|
|
36
|
+
|
|
37
|
+
return DChrono.toTimestamp(serializedDate);
|
|
38
|
+
},
|
|
39
|
+
),
|
|
40
|
+
);
|
|
41
|
+
type _CheckTimestamp = DCommon.ExpectType<typeof timestamp, string | number, "strict">;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Vérifier qu’une chaîne respecte le format sérialisé sûr d’une TheTime.
|
|
5
5
|
*/
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
9
|
const value = "time90000+";
|
|
10
10
|
const isSerialized = DChrono.isSerializedTheTime(value);
|
|
@@ -24,3 +24,18 @@ if (DChrono.isSerializedTheTime(value)) {
|
|
|
24
24
|
type _CheckNarrowed = DCommon.ExpectType<typeof timeValue, number, "strict">;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
declare const checkedValue: string;
|
|
28
|
+
|
|
29
|
+
// Le pipe valide la chaîne avant de lire sa valeur temporelle.
|
|
30
|
+
const timeValue = DCommon.pipe(
|
|
31
|
+
checkedValue,
|
|
32
|
+
DCommon.when(
|
|
33
|
+
DChrono.isSerializedTheTime,
|
|
34
|
+
(serializedTime) => {
|
|
35
|
+
type _CheckTime = DCommon.ExpectType<typeof serializedTime, DChrono.SerializedTheTime, "strict">;
|
|
36
|
+
|
|
37
|
+
return DChrono.toTimeValue(serializedTime);
|
|
38
|
+
},
|
|
39
|
+
),
|
|
40
|
+
);
|
|
41
|
+
type _CheckTimeValue = DCommon.ExpectType<typeof timeValue, string | number, "strict">;
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* Identifier si une valeur est une instance de TheTime et réduire son type.
|
|
5
5
|
*/
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const value:
|
|
9
|
+
declare const value: DCommon.AnyValue;
|
|
10
10
|
const isTime = DChrono.isTime(value);
|
|
11
11
|
|
|
12
12
|
// Le résultat indique si la valeur est une TheTime.
|
|
@@ -21,3 +21,16 @@ if (DChrono.isTime(value)) {
|
|
|
21
21
|
type _CheckNarrowed = DCommon.ExpectType<typeof timeValue, number, "strict">;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
// Le predicate unaire peut aussi établir TheTime dans le callback d’un pipe.
|
|
25
|
+
const timeValue = DCommon.pipe(
|
|
26
|
+
value,
|
|
27
|
+
DCommon.when(
|
|
28
|
+
DChrono.isTime,
|
|
29
|
+
(time) => {
|
|
30
|
+
type _CheckTime = DCommon.ExpectType<typeof time, DChrono.TheTime, "strict">;
|
|
31
|
+
|
|
32
|
+
return DChrono.toTimeValue(time);
|
|
33
|
+
},
|
|
34
|
+
),
|
|
35
|
+
);
|
|
36
|
+
type _CheckTimeValue = DCommon.ExpectType<typeof timeValue, DCommon.AnyValue, "strict">;
|
|
@@ -6,18 +6,14 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
DChrono.createDate("2021-01-15"),
|
|
12
|
-
] as const);
|
|
9
|
+
declare const dates: [DChrono.TheDate, DChrono.TheDate];
|
|
10
|
+
const latest = DChrono.maxDate(dates);
|
|
13
11
|
|
|
14
12
|
// La valeur obtenue est la date du 15 janvier.
|
|
15
13
|
type _CheckLatest = DCommon.ExpectType<typeof latest, DChrono.TheDate, "strict">;
|
|
16
14
|
|
|
17
15
|
// Les éléments peuvent être un mélange de TheDate et de dates sérialisées.
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
DChrono.createDate("2021-01-15"),
|
|
21
|
-
] as const);
|
|
16
|
+
declare const mixedDates: [DChrono.TheDate | DChrono.SerializedTheDate, DChrono.TheDate | DChrono.SerializedTheDate];
|
|
17
|
+
const latestMixed = DChrono.maxDate(mixedDates);
|
|
22
18
|
type _CheckMixed = DCommon.ExpectType<typeof latestMixed, DChrono.TheDate, "strict">;
|
|
23
19
|
|
|
@@ -6,18 +6,14 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
DChrono.createTimeOrThrow(2_000),
|
|
12
|
-
] as const);
|
|
9
|
+
declare const times: [DChrono.TheTime, DChrono.TheTime];
|
|
10
|
+
const longest = DChrono.maxTime(times);
|
|
13
11
|
|
|
14
12
|
// La valeur obtenue représente 2 000 millisecondes.
|
|
15
13
|
type _CheckLongest = DCommon.ExpectType<typeof longest, DChrono.TheTime, "strict">;
|
|
16
14
|
|
|
17
15
|
// Les éléments peuvent être un mélange de TheTime et de durées sérialisées.
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
DChrono.createTimeOrThrow(2_000),
|
|
21
|
-
] as const);
|
|
16
|
+
declare const mixedTimes: [DChrono.TheTime | DChrono.SerializedTheTime, DChrono.TheTime | DChrono.SerializedTheTime];
|
|
17
|
+
const longestMixed = DChrono.maxTime(mixedTimes);
|
|
22
18
|
type _CheckMixed = DCommon.ExpectType<typeof longestMixed, DChrono.TheTime, "strict">;
|
|
23
19
|
|
|
@@ -6,18 +6,14 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
DChrono.createDate("2021-01-01"),
|
|
12
|
-
] as const);
|
|
9
|
+
declare const dates: [DChrono.TheDate, DChrono.TheDate];
|
|
10
|
+
const earliest = DChrono.minDate(dates);
|
|
13
11
|
|
|
14
12
|
// La valeur obtenue est la date du 1er janvier.
|
|
15
13
|
type _CheckEarliest = DCommon.ExpectType<typeof earliest, DChrono.TheDate, "strict">;
|
|
16
14
|
|
|
17
15
|
// Les éléments peuvent être un mélange de TheDate et de dates sérialisées.
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
DChrono.createDate("2021-01-15"),
|
|
21
|
-
] as const);
|
|
16
|
+
declare const mixedDates: [DChrono.TheDate | DChrono.SerializedTheDate, DChrono.TheDate | DChrono.SerializedTheDate];
|
|
17
|
+
const earliestMixed = DChrono.minDate(mixedDates);
|
|
22
18
|
type _CheckMixed = DCommon.ExpectType<typeof earliestMixed, DChrono.TheDate, "strict">;
|
|
23
19
|
|
|
@@ -6,18 +6,14 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
DChrono.createTimeOrThrow(2_000),
|
|
12
|
-
] as const);
|
|
9
|
+
declare const times: [DChrono.TheTime, DChrono.TheTime];
|
|
10
|
+
const shortest = DChrono.minTime(times);
|
|
13
11
|
|
|
14
12
|
// La valeur obtenue représente 1 000 millisecondes.
|
|
15
13
|
type _CheckShortest = DCommon.ExpectType<typeof shortest, DChrono.TheTime, "strict">;
|
|
16
14
|
|
|
17
15
|
// Les éléments peuvent être un mélange de TheTime et de durées sérialisées.
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
DChrono.createTimeOrThrow(2_000),
|
|
21
|
-
] as const);
|
|
16
|
+
declare const mixedTimes: [DChrono.TheTime | DChrono.SerializedTheTime, DChrono.TheTime | DChrono.SerializedTheTime];
|
|
17
|
+
const shortestMixed = DChrono.minTime(mixedTimes);
|
|
22
18
|
type _CheckMixed = DCommon.ExpectType<typeof shortestMixed, DChrono.TheTime, "strict">;
|
|
23
19
|
|
|
@@ -7,10 +7,7 @@ import * as DArray from "@duplojs/lang/array";
|
|
|
7
7
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
8
8
|
import * as DCommon from "@duplojs/lang/common";
|
|
9
9
|
|
|
10
|
-
const dates
|
|
11
|
-
DChrono.createDate("2021-01-15"),
|
|
12
|
-
DChrono.createDate("2021-01-01"),
|
|
13
|
-
] as const;
|
|
10
|
+
declare const dates: readonly [DChrono.TheDate, DChrono.TheDate];
|
|
14
11
|
const ascending = DChrono.sortDates(dates, "ASC");
|
|
15
12
|
|
|
16
13
|
// La nouvelle collection est triée du 1er au 15 janvier.
|
|
@@ -24,9 +21,10 @@ const descending = DCommon.pipe(
|
|
|
24
21
|
type _CheckDescending = DCommon.ExpectType<typeof descending, DChrono.TheDate[], "strict">;
|
|
25
22
|
|
|
26
23
|
// Une collection peut mélanger dates sérialisées et TheDate.
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
DChrono.
|
|
30
|
-
]
|
|
24
|
+
declare const mixedDates: readonly [
|
|
25
|
+
DChrono.TheDate | DChrono.SerializedTheDate,
|
|
26
|
+
DChrono.TheDate | DChrono.SerializedTheDate,
|
|
27
|
+
];
|
|
28
|
+
const mixed = DChrono.sortDates(mixedDates, "ASC");
|
|
31
29
|
type _CheckMixed = DCommon.ExpectType<typeof mixed, DChrono.TheDate[], "strict">;
|
|
32
30
|
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const times
|
|
10
|
-
DChrono.createTimeOrThrow(2_000),
|
|
11
|
-
DChrono.createTimeOrThrow(1_000),
|
|
12
|
-
] as const;
|
|
9
|
+
declare const times: readonly [DChrono.TheTime, DChrono.TheTime];
|
|
13
10
|
const ascending = DChrono.sortTimes(times, "ASC");
|
|
14
11
|
|
|
15
12
|
// La nouvelle collection est triée de 1 000 à 2 000 millisecondes.
|
|
@@ -23,9 +20,10 @@ const descending = DCommon.pipe(
|
|
|
23
20
|
type _CheckDescending = DCommon.ExpectType<typeof descending, DChrono.TheTime[], "strict">;
|
|
24
21
|
|
|
25
22
|
// Une collection peut mélanger durées sérialisées et TheTime.
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
DChrono.
|
|
29
|
-
]
|
|
23
|
+
declare const mixedTimes: readonly [
|
|
24
|
+
DChrono.TheTime | DChrono.SerializedTheTime,
|
|
25
|
+
DChrono.TheTime | DChrono.SerializedTheTime,
|
|
26
|
+
];
|
|
27
|
+
const mixed = DChrono.sortTimes(mixedTimes, "ASC");
|
|
30
28
|
type _CheckMixed = DCommon.ExpectType<typeof mixed, DChrono.TheTime[], "strict">;
|
|
31
29
|
|
|
@@ -15,7 +15,7 @@ type _CheckTime = DCommon.ExpectType<typeof timeResult, DChrono.TheTime, "strict
|
|
|
15
15
|
|
|
16
16
|
// La forme curifiée s’applique aussi dans un pipe.
|
|
17
17
|
const piped = DCommon.pipe(
|
|
18
|
-
"date1000+"
|
|
18
|
+
"date1000+",
|
|
19
19
|
DChrono.subtractTime("time500+"),
|
|
20
20
|
);
|
|
21
21
|
type _CheckPiped = DCommon.ExpectType<typeof piped, DChrono.TheDate, "strict">;
|
|
@@ -17,6 +17,12 @@ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
|
17
17
|
|
|
18
18
|
declare const source: string | number;
|
|
19
19
|
|
|
20
|
+
if (DCommon.and(source, [DCommon.isType("string"), DCommon.truthy])) {
|
|
21
|
+
type _CheckIfValue = DCommon.ExpectType<typeof source, string, "strict">;
|
|
22
|
+
const uppercase = DString.toUpperCase(source);
|
|
23
|
+
type _CheckUppercase = DCommon.ExpectType<typeof uppercase, Uppercase<string>, "strict">;
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
// Appel curifié : le predicate composé est passé directement à DCommon.when.
|
|
21
27
|
const transformed = DCommon.pipe(
|
|
22
28
|
source,
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
* Créer une file d’attente typée avec une capacité optionnelle.
|
|
5
5
|
*/
|
|
6
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DEither from "@duplojs/lang/either";
|
|
7
8
|
|
|
8
9
|
const queue = DCommon.createQueue({ concurrency: 1 });
|
|
9
10
|
const result = queue.add(() => "done");
|
|
10
11
|
|
|
11
|
-
//
|
|
12
|
+
// Le résultat contient la valeur de la tâche, ou un Left si son exécution lève une erreur.
|
|
12
13
|
type _CheckResult = DCommon.ExpectType<
|
|
13
14
|
typeof result,
|
|
14
|
-
Promise<"
|
|
15
|
-
"
|
|
15
|
+
Promise<string | DEither.Left<"execution-error", unknown>>,
|
|
16
|
+
"strict"
|
|
16
17
|
>;
|
|
@@ -14,6 +14,12 @@ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
|
14
14
|
|
|
15
15
|
declare const source: string | number;
|
|
16
16
|
|
|
17
|
+
if (DCommon.equal(source, "value")) {
|
|
18
|
+
type _CheckIfValue = DCommon.ExpectType<typeof source, "value", "strict">;
|
|
19
|
+
const uppercase = DString.toUpperCase(source);
|
|
20
|
+
type _CheckUppercase = DCommon.ExpectType<typeof uppercase, "VALUE", "strict">;
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
// Appel curifié : le prédicat est passé directement à DCommon.when.
|
|
18
24
|
const transformed = DCommon.pipe(
|
|
19
25
|
source,
|
|
@@ -10,3 +10,22 @@ const result = DCommon.falsy(input);
|
|
|
10
10
|
|
|
11
11
|
// Le prédicat produit un booléen et distingue la branche falsy de l’union.
|
|
12
12
|
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
|
+
|
|
14
|
+
// L’appel direct expose la branche falsy dans le if.
|
|
15
|
+
if (DCommon.falsy(input)) {
|
|
16
|
+
type _CheckInput = DCommon.ExpectType<typeof input, "" | null, "strict">;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Le predicate unaire s’utilise directement avec DCommon.when.
|
|
20
|
+
const preserved = DCommon.pipe(
|
|
21
|
+
input,
|
|
22
|
+
DCommon.when(
|
|
23
|
+
DCommon.falsy,
|
|
24
|
+
(value) => {
|
|
25
|
+
type _CheckValue = DCommon.ExpectType<typeof value, "" | null, "strict">;
|
|
26
|
+
|
|
27
|
+
return DCommon.forward(value);
|
|
28
|
+
},
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
type _CheckPreserved = DCommon.ExpectType<typeof preserved, string | null, "strict">;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Créer un prédicat basé sur un constructeur avec narrowing de l’instance.
|
|
5
5
|
*/
|
|
6
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DChrono from "@duplojs/lang/chrono";
|
|
7
8
|
|
|
8
9
|
declare const input: Date | string;
|
|
9
10
|
const result = DCommon.instanceOf(input, Date);
|
|
@@ -11,13 +12,23 @@ const result = DCommon.instanceOf(input, Date);
|
|
|
11
12
|
// Le test runtime produit un booléen.
|
|
12
13
|
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
14
|
|
|
15
|
+
if (DCommon.instanceOf(input, Date)) {
|
|
16
|
+
type _CheckInput = DCommon.ExpectType<typeof input, Date, "strict">;
|
|
17
|
+
const chronoDate = DChrono.createDateOrThrow(input);
|
|
18
|
+
type _CheckChronoDate = DCommon.ExpectType<typeof chronoDate, DChrono.TheDate, "strict">;
|
|
19
|
+
}
|
|
20
|
+
|
|
14
21
|
// La forme curifiée s’utilise directement comme predicate dans DCommon.when.
|
|
15
|
-
const
|
|
22
|
+
const converted = DCommon.pipe(
|
|
16
23
|
input,
|
|
17
24
|
DCommon.when(
|
|
18
25
|
DCommon.instanceOf(Date),
|
|
19
|
-
|
|
26
|
+
(date) => {
|
|
27
|
+
type _CheckDate = DCommon.ExpectType<typeof date, Date, "strict">;
|
|
28
|
+
|
|
29
|
+
return DChrono.createDateOrThrow(date);
|
|
30
|
+
},
|
|
20
31
|
),
|
|
21
32
|
);
|
|
22
33
|
|
|
23
|
-
type
|
|
34
|
+
type _CheckConverted = DCommon.ExpectType<typeof converted, DChrono.TheDate | string, "strict">;
|
|
@@ -12,6 +12,12 @@ declare const input: string | number;
|
|
|
12
12
|
const result = DCommon.isType(input, "string");
|
|
13
13
|
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
14
14
|
|
|
15
|
+
if (DCommon.isType(input, "string")) {
|
|
16
|
+
type _CheckInput = DCommon.ExpectType<typeof input, string, "strict">;
|
|
17
|
+
const uppercase = DString.toUpperCase(input);
|
|
18
|
+
type _CheckUppercase = DCommon.ExpectType<typeof uppercase, Uppercase<string>, "strict">;
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
// Appel curifié : le predicate est passé directement à DCommon.when.
|
|
16
22
|
const transformed = DCommon.pipe(
|
|
17
23
|
input,
|