@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
|
@@ -9,14 +9,14 @@ declare const input: number;
|
|
|
9
9
|
|
|
10
10
|
const result = DCommon.justExec(() => {
|
|
11
11
|
if (input > 10) {
|
|
12
|
-
return "large"
|
|
12
|
+
return "large";
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
if (input > 0) {
|
|
16
|
-
return "positive"
|
|
16
|
+
return "positive";
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
return "non-positive"
|
|
19
|
+
return "non-positive";
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
// Le bloc est exécuté immédiatement : son résultat est directement affecté à `result`.
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* Combiner plusieurs prédicats en une condition satisfaite par au moins l’un d’eux.
|
|
5
5
|
*/
|
|
6
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
7
8
|
|
|
8
|
-
declare const input: string | number;
|
|
9
|
+
declare const input: string | number | boolean;
|
|
9
10
|
|
|
10
11
|
// Appel classique : un seul predicate accepté suffit.
|
|
11
12
|
const result = DCommon.or(input, [
|
|
@@ -14,6 +15,10 @@ const result = DCommon.or(input, [
|
|
|
14
15
|
]);
|
|
15
16
|
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
16
17
|
|
|
18
|
+
if (DCommon.or(input, [DCommon.isType("string"), DCommon.isType("number")])) {
|
|
19
|
+
type _CheckInput = DCommon.ExpectType<typeof input, string | number, "strict">;
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
// Appel curifié : le predicate composé est passé à DCommon.when.
|
|
18
23
|
const preserved = DCommon.pipe(
|
|
19
24
|
input,
|
|
@@ -22,8 +27,17 @@ const preserved = DCommon.pipe(
|
|
|
22
27
|
DCommon.isType("string"),
|
|
23
28
|
DCommon.isType("number"),
|
|
24
29
|
]),
|
|
25
|
-
|
|
30
|
+
(value) => {
|
|
31
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string | number, "strict">;
|
|
32
|
+
|
|
33
|
+
return DString.to(value);
|
|
34
|
+
},
|
|
26
35
|
),
|
|
27
36
|
);
|
|
28
37
|
|
|
29
|
-
|
|
38
|
+
// Les chaînes et les nombres sélectionnés deviennent des chaînes ; le booléen reste inchangé.
|
|
39
|
+
type _CheckPreserved = DCommon.ExpectType<
|
|
40
|
+
typeof preserved,
|
|
41
|
+
string | boolean | (string & DString.Number),
|
|
42
|
+
"strict"
|
|
43
|
+
>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DCommon.tap
|
|
3
|
+
*
|
|
4
|
+
* Exécuter un traitement secondaire tout en conservant la valeur d’entrée.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DString from "@duplojs/lang/string";
|
|
8
|
+
|
|
9
|
+
const input = {
|
|
10
|
+
status: "saved",
|
|
11
|
+
revision: 3,
|
|
12
|
+
};
|
|
13
|
+
declare function recordStatus(status: Uppercase<string>): void;
|
|
14
|
+
|
|
15
|
+
// Appel classique : enregistrer le statut sans remplacer l’objet d’entrée.
|
|
16
|
+
const direct = DCommon.tap(input, (entry) => {
|
|
17
|
+
recordStatus(DString.toUpperCase(entry.status));
|
|
18
|
+
});
|
|
19
|
+
type _CheckDirect = DCommon.ExpectType<typeof direct, typeof input, "strict">;
|
|
20
|
+
|
|
21
|
+
declare function persistAudit(entry: typeof input): Promise<void>;
|
|
22
|
+
|
|
23
|
+
// Appel curifié : attendre l’audit asynchrone puis conserver l’objet dans le pipe.
|
|
24
|
+
const piped = DCommon.pipe(
|
|
25
|
+
input,
|
|
26
|
+
DCommon.tap(persistAudit),
|
|
27
|
+
);
|
|
28
|
+
type _CheckPiped = DCommon.ExpectType<typeof piped, Promise<typeof input>, "strict">;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
7
|
|
|
8
8
|
const fromString = DCommon.toRegExp("file.name");
|
|
9
|
-
const fromTuple = DCommon.toRegExp(["pending", "done"]
|
|
9
|
+
const fromTuple = DCommon.toRegExp(["pending", "done"]);
|
|
10
10
|
const existing = /^(pending|done)$/;
|
|
11
11
|
const fromRegExp = DCommon.toRegExp(existing);
|
|
12
12
|
|
|
@@ -10,3 +10,22 @@ const result = DCommon.truthy(input);
|
|
|
10
10
|
|
|
11
11
|
// Le predicate produit un booléen et peut affiner input vers une chaîne.
|
|
12
12
|
type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
|
|
13
|
+
|
|
14
|
+
// L’appel direct affine dans le if ; la branche peut alors transformer la chaîne.
|
|
15
|
+
if (DCommon.truthy(input)) {
|
|
16
|
+
type _CheckInput = DCommon.ExpectType<typeof input, string, "strict">;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Une fonction déjà unaire se passe telle quelle à DCommon.when.
|
|
20
|
+
const transformed = DCommon.pipe(
|
|
21
|
+
input,
|
|
22
|
+
DCommon.when(
|
|
23
|
+
DCommon.truthy,
|
|
24
|
+
(value) => {
|
|
25
|
+
type _CheckValue = DCommon.ExpectType<typeof value, string, "strict">;
|
|
26
|
+
|
|
27
|
+
return DCommon.forward(value);
|
|
28
|
+
},
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
type _CheckTransformed = DCommon.ExpectType<typeof transformed, string | null, "strict">;
|
|
@@ -4,23 +4,54 @@
|
|
|
4
4
|
* Transformer une valeur uniquement lorsqu’un prédicat n’est pas satisfait.
|
|
5
5
|
*/
|
|
6
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DNumber from "@duplojs/lang/number";
|
|
8
|
+
import * as DString from "@duplojs/lang/string";
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
DCommon.
|
|
14
|
-
DCommon.forward,
|
|
10
|
+
// Appel classique : remplacer un nom vide, sans modifier les noms déjà renseignés.
|
|
11
|
+
declare const displayName: string;
|
|
12
|
+
const named = DCommon.whenNot(
|
|
13
|
+
displayName,
|
|
14
|
+
DString.isNotEmpty,
|
|
15
|
+
DCommon.justReturn("Anonyme"),
|
|
15
16
|
);
|
|
16
|
-
|
|
17
|
+
// La chaîne vide devient "Anonyme" ; les autres noms conservent la preuve NotEmpty.
|
|
18
|
+
type _CheckNamed = DCommon.ExpectType<typeof named, (string & DString.NotEmpty) | "Anonyme", "strict">;
|
|
17
19
|
|
|
18
|
-
// Appel curifié :
|
|
19
|
-
const
|
|
20
|
-
|
|
20
|
+
// Appel curifié : convertir les références numériques avant de normaliser leur casse.
|
|
21
|
+
declare const reference: string | number;
|
|
22
|
+
const normalizedReference = DCommon.pipe(
|
|
23
|
+
reference,
|
|
21
24
|
DCommon.whenNot(
|
|
22
25
|
DCommon.isType("string"),
|
|
23
|
-
|
|
26
|
+
DString.to,
|
|
24
27
|
),
|
|
28
|
+
DString.toUpperCase,
|
|
29
|
+
);
|
|
30
|
+
// Par exemple, 42 donne "42" et "ticket-ab" donne "TICKET-AB".
|
|
31
|
+
type _CheckNormalizedReference = DCommon.ExpectType<typeof normalizedReference, Uppercase<string>, "strict">;
|
|
32
|
+
|
|
33
|
+
// Predicates composés : signaler seulement les états qui ne sont ni prêts ni en attente.
|
|
34
|
+
declare const state: "ready" | "queued" | "blocked";
|
|
35
|
+
const labeledState = DCommon.whenNot(
|
|
36
|
+
state,
|
|
37
|
+
DCommon.or([DCommon.equal("ready"), DCommon.equal("queued")]),
|
|
38
|
+
DString.prepend("Attention : "),
|
|
39
|
+
);
|
|
40
|
+
// "blocked" devient "Attention : blocked" ; les deux autres littéraux sont conservés.
|
|
41
|
+
type _CheckLabeledState = DCommon.ExpectType<
|
|
42
|
+
typeof labeledState,
|
|
43
|
+
"ready" | "queued" | "Attention : blocked",
|
|
44
|
+
"strict"
|
|
45
|
+
>;
|
|
46
|
+
|
|
47
|
+
// Test booléen : appliquer un délai minimum calculé à l'exécution.
|
|
48
|
+
declare const delay: number;
|
|
49
|
+
declare const minimumDelay: number;
|
|
50
|
+
const boundedDelay = DCommon.whenNot(
|
|
51
|
+
delay,
|
|
52
|
+
DNumber.greaterThanOrEqual(minimumDelay),
|
|
53
|
+
DCommon.justReturn(minimumDelay),
|
|
25
54
|
);
|
|
26
|
-
|
|
55
|
+
// Les délais trop courts sont relevés au minimum ; les autres restent inchangés.
|
|
56
|
+
// La borne dynamique ne peut pas être représentée comme une contrainte littérale.
|
|
57
|
+
type _CheckBoundedDelay = DCommon.ExpectType<typeof boundedDelay, number, "strict">;
|
|
@@ -182,6 +182,10 @@ Convertir une quantité en octets écrite avec une unité ou déjà numérique.
|
|
|
182
182
|
|
|
183
183
|
Additionner des durées écrites avec une unité ou exprimées en millisecondes.
|
|
184
184
|
|
|
185
|
+
### [DCommon.tap](10-tap.ts)
|
|
186
|
+
|
|
187
|
+
Exécuter un traitement secondaire tout en conservant la valeur d’entrée.
|
|
188
|
+
|
|
185
189
|
### [DCommon.timeout](10-timeout.ts)
|
|
186
190
|
|
|
187
191
|
Créer une promise résolue après un délai en millisecondes.
|
|
@@ -40,5 +40,5 @@ type _CheckError = DCommon.ExpectType<
|
|
|
40
40
|
const tupleResult = DEither.asyncGroup([
|
|
41
41
|
() => Promise.resolve(DEither.success("Alice")),
|
|
42
42
|
() => Promise.resolve(DEither.success(2)),
|
|
43
|
-
]
|
|
43
|
+
]);
|
|
44
44
|
type _CheckTuple = DCommon.ExpectType<typeof tupleResult, Promise<DEither.Success<["Alice", 2]>>, "strict">;
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
declare const saved: "saved";
|
|
10
|
+
const result = DEither.asyncSafeCallback(() => Promise.resolve(saved));
|
|
10
11
|
|
|
11
12
|
// La sortie est toujours une Promise et inclut le Left standard des erreurs capturées.
|
|
12
13
|
type _CheckResult = DCommon.ExpectType<
|
|
@@ -15,7 +16,8 @@ type _CheckResult = DCommon.ExpectType<
|
|
|
15
16
|
"strict"
|
|
16
17
|
>;
|
|
17
18
|
|
|
18
|
-
const
|
|
19
|
+
const savedPromise = Promise.resolve(saved);
|
|
20
|
+
const promiseInput = DEither.asyncSafeCallback(savedPromise);
|
|
19
21
|
type _CheckPromiseInput = DCommon.ExpectType<
|
|
20
22
|
typeof promiseInput,
|
|
21
23
|
Promise<DEither.SafeCallbackSuccess<"saved"> | DEither.SafeCallbackError>,
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DEither.extractErrorInLeft
|
|
3
|
+
*
|
|
4
|
+
* Extraire d’un Left les erreurs DuploJS sélectionnées par leur identifiant.
|
|
5
|
+
*/
|
|
6
|
+
import * as DEither from "@duplojs/lang/either";
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
|
+
|
|
9
|
+
class MissingError extends DCommon.DuploJSError.parentClass("missing") {}
|
|
10
|
+
class ForbiddenError extends DCommon.DuploJSError.parentClass("forbidden") {}
|
|
11
|
+
class UnexpectedError extends DCommon.DuploJSError.parentClass("unexpected") {}
|
|
12
|
+
|
|
13
|
+
type LoadResult = (
|
|
14
|
+
| DEither.Left<"load-error", MissingError | ForbiddenError | UnexpectedError>
|
|
15
|
+
| DEither.Right<"success", string>
|
|
16
|
+
| null
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
declare const result: LoadResult;
|
|
20
|
+
|
|
21
|
+
// Appel classique : l’erreur sélectionnée reçoit son identifiant comme information.
|
|
22
|
+
const extracted = DEither.extractErrorInLeft(result, "missing");
|
|
23
|
+
type _CheckExtracted = DCommon.ExpectType<
|
|
24
|
+
typeof extracted,
|
|
25
|
+
| DEither.Left<"load-error", ForbiddenError | UnexpectedError>
|
|
26
|
+
| DEither.Left<"missing", MissingError>
|
|
27
|
+
| DEither.Right<"success", string>
|
|
28
|
+
| null,
|
|
29
|
+
"strict"
|
|
30
|
+
>;
|
|
31
|
+
|
|
32
|
+
// Appel curifié : extraire plusieurs erreurs avant de traiter l’erreur restante.
|
|
33
|
+
const separated = DCommon.pipe(
|
|
34
|
+
result,
|
|
35
|
+
DEither.extractErrorInLeft(["missing", "forbidden"]),
|
|
36
|
+
);
|
|
37
|
+
type _CheckSeparated = DCommon.ExpectType<
|
|
38
|
+
typeof separated,
|
|
39
|
+
| DEither.Left<"load-error", UnexpectedError>
|
|
40
|
+
| DEither.Left<"missing", MissingError>
|
|
41
|
+
| DEither.Left<"forbidden", ForbiddenError>
|
|
42
|
+
| DEither.Right<"success", string>
|
|
43
|
+
| null,
|
|
44
|
+
"strict"
|
|
45
|
+
>;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const input
|
|
9
|
+
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
10
|
|
|
11
11
|
// Appel classique : le type est réduit aux informations sélectionnées.
|
|
12
12
|
const direct = DEither.forwardAssertsSelection(input, {
|
|
@@ -53,6 +53,6 @@ type _CheckError = DCommon.ExpectType<
|
|
|
53
53
|
const tupleResult = DEither.group([
|
|
54
54
|
DEither.success("Alice"),
|
|
55
55
|
DEither.success(2),
|
|
56
|
-
]
|
|
56
|
+
]);
|
|
57
57
|
// La forme tuple conserve sa longueur et déballe chaque Right.
|
|
58
58
|
type _CheckTuple = DCommon.ExpectType<typeof tupleResult, DEither.Success<["Alice", 2]>, "strict">;
|
|
@@ -8,6 +8,12 @@ import * as DCommon from "@duplojs/lang/common";
|
|
|
8
8
|
|
|
9
9
|
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
10
|
|
|
11
|
+
if (DEither.hasInformation(input, "missing")) {
|
|
12
|
+
type _CheckInput = DCommon.ExpectType<typeof input, DEither.Left<"missing", Error>, "strict">;
|
|
13
|
+
const reason = DEither.unwrapLeft(input);
|
|
14
|
+
type _CheckReason = DCommon.ExpectType<typeof reason, Error, "strict">;
|
|
15
|
+
}
|
|
16
|
+
|
|
11
17
|
// La forme curifiée est directement utilisable comme predicate de DCommon.when.
|
|
12
18
|
const result = DCommon.pipe(
|
|
13
19
|
input,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Vérifier le statut Left et affiner le type de la valeur.
|
|
5
5
|
*/
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
9
|
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
10
|
|
|
@@ -14,3 +14,12 @@ if (DEither.isLeft(input)) {
|
|
|
14
14
|
const value = DEither.unwrapLeft(input);
|
|
15
15
|
type _CheckValue = DCommon.ExpectType<typeof value, Error, "strict">;
|
|
16
16
|
}
|
|
17
|
+
|
|
18
|
+
const result = DCommon.pipe(
|
|
19
|
+
input,
|
|
20
|
+
DCommon.when(
|
|
21
|
+
DEither.isLeft,
|
|
22
|
+
DEither.unwrapLeft,
|
|
23
|
+
),
|
|
24
|
+
);
|
|
25
|
+
type _CheckResult = DCommon.ExpectType<typeof result, Error | DEither.Success<"saved">, "strict">;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Vérifier le statut Right et affiner le type de la valeur.
|
|
5
5
|
*/
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
|
-
import
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
9
|
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
10
|
|
|
@@ -14,3 +14,12 @@ if (DEither.isRight(input)) {
|
|
|
14
14
|
const value = DEither.unwrapRight(input);
|
|
15
15
|
type _CheckValue = DCommon.ExpectType<typeof value, "saved", "strict">;
|
|
16
16
|
}
|
|
17
|
+
|
|
18
|
+
const result = DCommon.pipe(
|
|
19
|
+
input,
|
|
20
|
+
DCommon.when(
|
|
21
|
+
DEither.isRight,
|
|
22
|
+
DEither.unwrapRight,
|
|
23
|
+
),
|
|
24
|
+
);
|
|
25
|
+
type _CheckResult = DCommon.ExpectType<typeof result, "saved" | DEither.Left<"missing", Error>, "strict">;
|
|
@@ -7,6 +7,16 @@ import * as DEither from "@duplojs/lang/either";
|
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
9
|
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
|
+
|
|
11
|
+
if (DEither.isSelected(input, {
|
|
12
|
+
success: true,
|
|
13
|
+
missing: false,
|
|
14
|
+
})) {
|
|
15
|
+
type _CheckInput = DCommon.ExpectType<typeof input, DEither.Success<"saved">, "strict">;
|
|
16
|
+
const value = DEither.unwrapRight(input);
|
|
17
|
+
type _CheckValue = DCommon.ExpectType<typeof value, "saved", "strict">;
|
|
18
|
+
}
|
|
19
|
+
|
|
10
20
|
// La forme curifiée est directement utilisable comme predicate de DCommon.when.
|
|
11
21
|
const result = DCommon.pipe(
|
|
12
22
|
input,
|
|
@@ -24,6 +34,8 @@ type _CheckResult = DCommon.ExpectType<typeof result, "saved" | DEither.Left<"mi
|
|
|
24
34
|
|
|
25
35
|
const matches = DEither.isSelected(
|
|
26
36
|
DEither.left("missing", new Error("missing")),
|
|
27
|
-
{
|
|
37
|
+
{
|
|
38
|
+
missing: true,
|
|
39
|
+
},
|
|
28
40
|
);
|
|
29
41
|
type _CheckMatches = DCommon.ExpectType<typeof matches, boolean, "strict">;
|
|
@@ -19,5 +19,5 @@ const piped = DCommon.pipe(
|
|
|
19
19
|
);
|
|
20
20
|
type _CheckPiped = DCommon.ExpectType<typeof piped, DEither.Right<"validated", "Alice">, "strict">;
|
|
21
21
|
|
|
22
|
-
const rejected = DEither.keepAsRightSelection(DEither.success("saved"), { success: false }
|
|
22
|
+
const rejected = DEither.keepAsRightSelection(DEither.success("saved"), { success: false });
|
|
23
23
|
type _CheckRejected = DCommon.ExpectType<typeof rejected, DEither.Left<"success", "saved">, "strict">;
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const input
|
|
9
|
+
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
|
+
declare const stored: "stored";
|
|
11
|
+
declare const rejected: "rejected";
|
|
10
12
|
|
|
11
13
|
// Appel classique : chaque information de l’union possède une callback.
|
|
12
14
|
const direct = DEither.matchInformation(input, {
|
|
13
|
-
success: (value) =>
|
|
14
|
-
missing: (value) =>
|
|
15
|
+
success: (value) => stored,
|
|
16
|
+
missing: (value) => rejected,
|
|
15
17
|
});
|
|
16
18
|
type _CheckDirect = DCommon.ExpectType<typeof direct, "stored" | "rejected", "strict">;
|
|
17
19
|
|
|
@@ -19,8 +21,8 @@ type _CheckDirect = DCommon.ExpectType<typeof direct, "stored" | "rejected", "st
|
|
|
19
21
|
const piped = DCommon.pipe(
|
|
20
22
|
input,
|
|
21
23
|
DEither.matchInformation({
|
|
22
|
-
success: (value) =>
|
|
23
|
-
missing: (value) =>
|
|
24
|
+
success: (value) => stored,
|
|
25
|
+
missing: (value) => rejected,
|
|
24
26
|
}),
|
|
25
27
|
);
|
|
26
28
|
type _CheckPiped = DCommon.ExpectType<typeof piped, "stored" | "rejected", "strict">;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DEither.matchInformationCombination
|
|
3
|
+
*
|
|
4
|
+
* Appliquer un traitement pour chaque combinaison d’informations d’une collection d’Either.
|
|
5
|
+
*/
|
|
6
|
+
import * as DEither from "@duplojs/lang/either";
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
|
+
|
|
9
|
+
type Combination = readonly [
|
|
10
|
+
DEither.Success<42> | DEither.Error<"message">,
|
|
11
|
+
DEither.Right<"found", 1> | DEither.Left<"missing", undefined>,
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
declare const combination: Combination;
|
|
15
|
+
|
|
16
|
+
// Appel classique : les quatre combinaisons possibles sont traitées explicitement.
|
|
17
|
+
const direct = DEither.matchInformationCombination(combination, {
|
|
18
|
+
"success/found": (values) => {
|
|
19
|
+
type _CheckValues = DCommon.ExpectType<typeof values, readonly [42, 1], "strict">;
|
|
20
|
+
return values;
|
|
21
|
+
},
|
|
22
|
+
"success/missing": (values) => {
|
|
23
|
+
type _CheckValues = DCommon.ExpectType<typeof values, readonly [42, undefined], "strict">;
|
|
24
|
+
return values;
|
|
25
|
+
},
|
|
26
|
+
"error/found": (values) => {
|
|
27
|
+
type _CheckValues = DCommon.ExpectType<typeof values, readonly ["message", 1], "strict">;
|
|
28
|
+
return values;
|
|
29
|
+
},
|
|
30
|
+
"error/missing": (values) => {
|
|
31
|
+
type _CheckValues = DCommon.ExpectType<typeof values, readonly ["message", undefined], "strict">;
|
|
32
|
+
return values;
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
type _CheckDirect = DCommon.ExpectType<
|
|
36
|
+
typeof direct,
|
|
37
|
+
| readonly [42, 1]
|
|
38
|
+
| readonly [42, undefined]
|
|
39
|
+
| readonly ["message", 1]
|
|
40
|
+
| readonly ["message", undefined],
|
|
41
|
+
"strict"
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
// Appel curifié : le matcher exhaustif est directement placé dans le pipe.
|
|
45
|
+
const piped = DCommon.pipe(
|
|
46
|
+
combination,
|
|
47
|
+
DEither.matchInformationCombination({
|
|
48
|
+
"success/found": (values) => values,
|
|
49
|
+
"success/missing": (values) => values,
|
|
50
|
+
"error/found": (values) => values,
|
|
51
|
+
"error/missing": (values) => values,
|
|
52
|
+
}),
|
|
53
|
+
);
|
|
54
|
+
type _CheckPiped = DCommon.ExpectType<
|
|
55
|
+
typeof piped,
|
|
56
|
+
| readonly [42, 1]
|
|
57
|
+
| readonly [42, undefined]
|
|
58
|
+
| readonly ["message", 1]
|
|
59
|
+
| readonly ["message", undefined],
|
|
60
|
+
"strict"
|
|
61
|
+
>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title DEither.matchInformationCombinationOtherwise
|
|
3
|
+
*
|
|
4
|
+
* Traiter les combinaisons d’informations choisies et fournir un cas de repli.
|
|
5
|
+
*/
|
|
6
|
+
import * as DEither from "@duplojs/lang/either";
|
|
7
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
8
|
+
|
|
9
|
+
type Combination = readonly [
|
|
10
|
+
DEither.Success<42> | DEither.Error<"message">,
|
|
11
|
+
DEither.Right<"found", 1> | DEither.Left<"missing", undefined>,
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
declare const combination: Combination;
|
|
15
|
+
|
|
16
|
+
// Appel classique : traiter success/found et transmettre les autres cas au repli.
|
|
17
|
+
const direct = DEither.matchInformationCombinationOtherwise(
|
|
18
|
+
combination,
|
|
19
|
+
{
|
|
20
|
+
"success/found": (values) => {
|
|
21
|
+
type _CheckValues = DCommon.ExpectType<typeof values, readonly [42, 1], "strict">;
|
|
22
|
+
return values;
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
(values) => {
|
|
26
|
+
type _CheckRemaining = DCommon.ExpectType<
|
|
27
|
+
typeof values,
|
|
28
|
+
| readonly [DEither.Success<42>, DEither.Left<"missing", undefined>]
|
|
29
|
+
| readonly [DEither.Error<"message">, DEither.Right<"found", 1>]
|
|
30
|
+
| readonly [DEither.Error<"message">, DEither.Left<"missing", undefined>],
|
|
31
|
+
"strict"
|
|
32
|
+
>;
|
|
33
|
+
return values;
|
|
34
|
+
},
|
|
35
|
+
);
|
|
36
|
+
type _CheckDirect = DCommon.ExpectType<
|
|
37
|
+
typeof direct,
|
|
38
|
+
| readonly [42, 1]
|
|
39
|
+
| readonly [DEither.Success<42>, DEither.Left<"missing", undefined>]
|
|
40
|
+
| readonly [DEither.Error<"message">, DEither.Right<"found", 1>]
|
|
41
|
+
| readonly [DEither.Error<"message">, DEither.Left<"missing", undefined>],
|
|
42
|
+
"strict"
|
|
43
|
+
>;
|
|
44
|
+
|
|
45
|
+
// Appel curifié : la sélection et le repli sont configurés dans le pipe.
|
|
46
|
+
const piped = DCommon.pipe(
|
|
47
|
+
combination,
|
|
48
|
+
DEither.matchInformationCombinationOtherwise(
|
|
49
|
+
{
|
|
50
|
+
"error/missing": (values) => values,
|
|
51
|
+
},
|
|
52
|
+
(values) => values,
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
type _CheckPiped = DCommon.ExpectType<
|
|
56
|
+
typeof piped,
|
|
57
|
+
| readonly [DEither.Success<42>, DEither.Right<"found", 1>]
|
|
58
|
+
| readonly [DEither.Success<42>, DEither.Left<"missing", undefined>]
|
|
59
|
+
| readonly [DEither.Error<"message">, DEither.Right<"found", 1>]
|
|
60
|
+
| readonly ["message", undefined],
|
|
61
|
+
"strict"
|
|
62
|
+
>;
|
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const input
|
|
9
|
+
declare const input: DEither.Success<"saved"> | DEither.Left<"missing", Error>;
|
|
10
|
+
declare const stored: "stored";
|
|
11
|
+
declare const unhandled: "unhandled";
|
|
10
12
|
|
|
11
13
|
// Appel classique : seules les informations documentées dans le matcher sont ciblées.
|
|
12
14
|
const direct = DEither.matchInformationOtherwise(
|
|
13
15
|
input,
|
|
14
|
-
{ success: (value: "saved") =>
|
|
15
|
-
(value) =>
|
|
16
|
+
{ success: (value: "saved") => stored },
|
|
17
|
+
(value) => unhandled,
|
|
16
18
|
);
|
|
17
19
|
type _CheckDirect = DCommon.ExpectType<typeof direct, "stored" | "unhandled", "strict">;
|
|
18
20
|
|
|
@@ -20,8 +22,8 @@ type _CheckDirect = DCommon.ExpectType<typeof direct, "stored" | "unhandled", "s
|
|
|
20
22
|
const piped = DCommon.pipe(
|
|
21
23
|
input,
|
|
22
24
|
DEither.matchInformationOtherwise(
|
|
23
|
-
{ success: (value: "saved") =>
|
|
24
|
-
(value) =>
|
|
25
|
+
{ success: (value: "saved") => stored },
|
|
26
|
+
(value) => unhandled,
|
|
25
27
|
),
|
|
26
28
|
);
|
|
27
29
|
type _CheckPiped = DCommon.ExpectType<typeof piped, "stored" | "unhandled", "strict">;
|
|
@@ -44,6 +44,7 @@ type _CheckFinalRight = DCommon.ExpectType<
|
|
|
44
44
|
>;
|
|
45
45
|
|
|
46
46
|
declare const input: Promise<DEither.Success<"saved"> | DEither.Error<"missing">>;
|
|
47
|
+
declare const neverReached: "never-reached";
|
|
47
48
|
|
|
48
49
|
// Un Left initial est propagé et les étapes suivantes ne sont pas exécutées.
|
|
49
50
|
const propagated = DEither.rightAsyncPipe(
|
|
@@ -60,7 +61,7 @@ type _CheckPropagated = DCommon.ExpectType<
|
|
|
60
61
|
const stopped = DEither.rightAsyncPipe(
|
|
61
62
|
Promise.resolve(DEither.success("saved")),
|
|
62
63
|
() => Promise.resolve(DEither.error("not-found")),
|
|
63
|
-
() => Promise.resolve(
|
|
64
|
+
() => Promise.resolve(neverReached),
|
|
64
65
|
);
|
|
65
66
|
type _CheckStopped = DCommon.ExpectType<
|
|
66
67
|
typeof stopped,
|
|
@@ -63,7 +63,7 @@ type _CheckPropagated = DCommon.ExpectType<
|
|
|
63
63
|
const stopped = DEither.rightPipe(
|
|
64
64
|
DEither.success("saved"),
|
|
65
65
|
() => DEither.error("not-found"),
|
|
66
|
-
() => "never-reached"
|
|
66
|
+
() => "never-reached",
|
|
67
67
|
);
|
|
68
68
|
type _CheckStopped = DCommon.ExpectType<
|
|
69
69
|
typeof stopped,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
7
|
import type * as DCommon from "@duplojs/lang/common";
|
|
8
8
|
|
|
9
|
-
const success = DEither.safeCallback(() => "saved"
|
|
9
|
+
const success = DEither.safeCallback(() => "saved");
|
|
10
10
|
// Une valeur brute devient SafeCallbackSuccess ; la capture d’une exception reste dans le contrat.
|
|
11
11
|
type _CheckSuccess = DCommon.ExpectType<
|
|
12
12
|
typeof success,
|