@duplojs/agents-kit 0.0.0-stage → 0.1.0-beta.10
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 +81 -2
- package/dist/bin/index.d.ts +2 -0
- package/dist/bin/index.mjs +7 -0
- package/dist/bin/packagePath.d.ts +2 -0
- package/dist/bin/packagePath.mjs +12 -0
- package/dist/bin/setup/index.d.ts +12 -0
- package/dist/bin/setup/index.mjs +33 -0
- package/dist/bin/setup/instructions.d.ts +8 -0
- package/dist/bin/setup/instructions.mjs +27 -0
- package/dist/bin/skills/index.d.ts +5 -0
- package/dist/bin/skills/index.mjs +11 -0
- package/dist/bin/skills/install.d.ts +2 -0
- package/dist/bin/skills/install.mjs +25 -0
- package/dist/bin/skills/skill.d.ts +35 -0
- package/dist/bin/skills/skill.mjs +60 -0
- package/dist/bin/skills/update.d.ts +2 -0
- package/dist/bin/skills/update.mjs +19 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +0 -0
- package/docs/API/10-lang/10-array/10-at.ts +65 -0
- package/docs/API/10-lang/10-array/10-chunk.ts +42 -0
- package/docs/API/10-lang/10-array/10-coalescing.ts +20 -0
- package/docs/API/10-lang/10-array/10-concat.ts +34 -0
- package/docs/API/10-lang/10-array/10-copyWithin.ts +34 -0
- package/docs/API/10-lang/10-array/10-every.ts +25 -0
- package/docs/API/10-lang/10-array/10-fill.ts +34 -0
- package/docs/API/10-lang/10-array/10-fillAll.ts +34 -0
- package/docs/API/10-lang/10-array/10-filter.ts +43 -0
- package/docs/API/10-lang/10-array/10-find.ts +33 -0
- package/docs/API/10-lang/10-array/10-findAndReplace.ts +35 -0
- package/docs/API/10-lang/10-array/10-findAndSpliceDelete.ts +35 -0
- package/docs/API/10-lang/10-array/10-findAndSpliceInsert.ts +35 -0
- package/docs/API/10-lang/10-array/10-findAndSpliceReplace.ts +24 -0
- package/docs/API/10-lang/10-array/10-findDuplicates.ts +19 -0
- package/docs/API/10-lang/10-array/10-findIndex.ts +25 -0
- package/docs/API/10-lang/10-array/10-findLast.ts +33 -0
- package/docs/API/10-lang/10-array/10-findLastIndex.ts +25 -0
- package/docs/API/10-lang/10-array/10-first.ts +21 -0
- package/docs/API/10-lang/10-array/10-flat.ts +22 -0
- package/docs/API/10-lang/10-array/10-flatMap.ts +24 -0
- package/docs/API/10-lang/10-array/10-from.ts +25 -0
- package/docs/API/10-lang/10-array/10-group.ts +27 -0
- package/docs/API/10-lang/10-array/10-groupOutput.ts +30 -0
- package/docs/API/10-lang/10-array/10-includes.ts +24 -0
- package/docs/API/10-lang/10-array/10-indexOf.ts +24 -0
- package/docs/API/10-lang/10-array/10-insert.ts +34 -0
- package/docs/API/10-lang/10-array/10-is.ts +29 -0
- package/docs/API/10-lang/10-array/10-isLastIndex.ts +24 -0
- package/docs/API/10-lang/10-array/10-last.ts +21 -0
- package/docs/API/10-lang/10-array/10-lastIndexOf.ts +24 -0
- package/docs/API/10-lang/10-array/10-length.ts +28 -0
- package/docs/API/10-lang/10-array/10-lengthEqual.ts +39 -0
- package/docs/API/10-lang/10-array/10-map.ts +34 -0
- package/docs/API/10-lang/10-array/10-maxElements.ts +44 -0
- package/docs/API/10-lang/10-array/10-minElements.ts +44 -0
- package/docs/API/10-lang/10-array/10-notIncludes.ts +24 -0
- package/docs/API/10-lang/10-array/10-pop.ts +23 -0
- package/docs/API/10-lang/10-array/10-prepend.ts +34 -0
- package/docs/API/10-lang/10-array/10-push.ts +34 -0
- package/docs/API/10-lang/10-array/10-reduce.ts +28 -0
- package/docs/API/10-lang/10-array/10-reduceFrom.ts +16 -0
- package/docs/API/10-lang/10-array/10-reduceRight.ts +28 -0
- package/docs/API/10-lang/10-array/10-reverse.ts +25 -0
- package/docs/API/10-lang/10-array/10-select.ts +26 -0
- package/docs/API/10-lang/10-array/10-set.ts +24 -0
- package/docs/API/10-lang/10-array/10-shift.ts +23 -0
- package/docs/API/10-lang/10-array/10-slice.ts +24 -0
- package/docs/API/10-lang/10-array/10-some.ts +25 -0
- package/docs/API/10-lang/10-array/10-sort.ts +34 -0
- package/docs/API/10-lang/10-array/10-spliceDelete.ts +34 -0
- package/docs/API/10-lang/10-array/10-spliceInsert.ts +34 -0
- package/docs/API/10-lang/10-array/10-spliceReplace.ts +24 -0
- package/docs/API/10-lang/10-array/10-unshift.ts +34 -0
- package/docs/API/10-lang/10-array/index.llms.md +220 -0
- package/docs/API/10-lang/10-array/index.md +3 -0
- package/docs/API/10-lang/10-chrono/10-addDays.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addHours.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addMilliseconds.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addMinutes.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addMonths.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addSeconds.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addTime.ts +38 -0
- package/docs/API/10-lang/10-chrono/10-addWeeks.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-addYears.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-applyTimezone.ts +29 -0
- package/docs/API/10-lang/10-chrono/10-betweenThanDate.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualDate.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualTime.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-betweenThanTime.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-closestTo.ts +45 -0
- package/docs/API/10-lang/10-chrono/10-computeTime.ts +35 -0
- package/docs/API/10-lang/10-chrono/10-createDate.ts +122 -0
- package/docs/API/10-lang/10-chrono/10-createDateOrThrow.ts +39 -0
- package/docs/API/10-lang/10-chrono/10-createTime.ts +86 -0
- package/docs/API/10-lang/10-chrono/10-createTimeOrThrow.ts +28 -0
- package/docs/API/10-lang/10-chrono/10-eachDate.ts +67 -0
- package/docs/API/10-lang/10-chrono/10-equalDate.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-equalTime.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-formatDate.ts +43 -0
- package/docs/API/10-lang/10-chrono/10-formatTime.ts +37 -0
- package/docs/API/10-lang/10-chrono/10-getDayOfMonth.ts +37 -0
- package/docs/API/10-lang/10-chrono/10-getDayOfWeek.ts +30 -0
- package/docs/API/10-lang/10-chrono/10-getDayOfYear.ts +28 -0
- package/docs/API/10-lang/10-chrono/10-getDifference.ts +29 -0
- package/docs/API/10-lang/10-chrono/10-getFirstDayOfMonth.ts +24 -0
- package/docs/API/10-lang/10-chrono/10-getFirstDayOfWeek.ts +24 -0
- package/docs/API/10-lang/10-chrono/10-getHour.ts +28 -0
- package/docs/API/10-lang/10-chrono/10-getLastDayOfMonth.ts +24 -0
- package/docs/API/10-lang/10-chrono/10-getLastDayOfWeek.ts +24 -0
- package/docs/API/10-lang/10-chrono/10-getMilliseconds.ts +24 -0
- package/docs/API/10-lang/10-chrono/10-getMinute.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-getMonth.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-getSecond.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-getTimezoneOffset.ts +28 -0
- package/docs/API/10-lang/10-chrono/10-getWeekOfYear.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-getYear.ts +27 -0
- package/docs/API/10-lang/10-chrono/10-greaterThanDate.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualDate.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualTime.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-greaterThanTime.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-isDate.ts +36 -0
- package/docs/API/10-lang/10-chrono/10-isSafeTimeValue.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-isSafeTimestamp.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +41 -0
- package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +41 -0
- package/docs/API/10-lang/10-chrono/10-isTime.ts +36 -0
- package/docs/API/10-lang/10-chrono/10-lessThanDate.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-lessThanOrEqualDate.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-lessThanOrEqualTime.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-lessThanTime.ts +26 -0
- package/docs/API/10-lang/10-chrono/10-makeSafeTimeValue.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-makeSafeTimestamp.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-maxDate.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-maxTime.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-minDate.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-minTime.ts +19 -0
- package/docs/API/10-lang/10-chrono/10-now.ts +13 -0
- package/docs/API/10-lang/10-chrono/10-round.ts +41 -0
- package/docs/API/10-lang/10-chrono/10-serialize.ts +23 -0
- package/docs/API/10-lang/10-chrono/10-sortDates.ts +30 -0
- package/docs/API/10-lang/10-chrono/10-sortTimes.ts +29 -0
- package/docs/API/10-lang/10-chrono/10-subtractDays.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractHours.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractMilliseconds.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractMinutes.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractMonths.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractSeconds.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractTime.ts +38 -0
- package/docs/API/10-lang/10-chrono/10-subtractWeeks.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-subtractYears.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-toDateISOString.ts +17 -0
- package/docs/API/10-lang/10-chrono/10-toNative.ts +25 -0
- package/docs/API/10-lang/10-chrono/10-toTimeValue.ts +17 -0
- package/docs/API/10-lang/10-chrono/10-toTimestamp.ts +17 -0
- package/docs/API/10-lang/10-chrono/10-today.ts +13 -0
- package/docs/API/10-lang/10-chrono/10-tomorrow.ts +13 -0
- package/docs/API/10-lang/10-chrono/10-yesterday.ts +13 -0
- package/docs/API/10-lang/10-chrono/index.llms.md +332 -0
- package/docs/API/10-lang/10-chrono/index.md +3 -0
- package/docs/API/10-lang/10-common/10-and.ts +51 -0
- package/docs/API/10-lang/10-common/10-asserts.ts +13 -0
- package/docs/API/10-lang/10-common/10-asyncInnerPipe.ts +23 -0
- package/docs/API/10-lang/10-common/10-asyncLoop.ts +23 -0
- package/docs/API/10-lang/10-common/10-asyncLoopAccumulator.ts +40 -0
- package/docs/API/10-lang/10-common/10-asyncPipe.ts +21 -0
- package/docs/API/10-lang/10-common/10-callThen.ts +22 -0
- package/docs/API/10-lang/10-common/10-cast.ts +16 -0
- package/docs/API/10-lang/10-common/10-clone.ts +12 -0
- package/docs/API/10-lang/10-common/10-createAsyncRetry.ts +34 -0
- package/docs/API/10-lang/10-common/10-createBuilder.ts +19 -0
- package/docs/API/10-lang/10-common/10-createEnum.ts +25 -0
- package/docs/API/10-lang/10-common/10-createExternalPromise.ts +13 -0
- package/docs/API/10-lang/10-common/10-createFormData.ts +16 -0
- package/docs/API/10-lang/10-common/10-createInterpolation.ts +12 -0
- package/docs/API/10-lang/10-common/10-createQueue.ts +17 -0
- package/docs/API/10-lang/10-common/10-createTransformer.ts +16 -0
- package/docs/API/10-lang/10-common/10-detachObjectMethod.ts +20 -0
- package/docs/API/10-lang/10-common/10-equal.ts +37 -0
- package/docs/API/10-lang/10-common/10-escapeRegExp.ts +11 -0
- package/docs/API/10-lang/10-common/10-falsy.ts +31 -0
- package/docs/API/10-lang/10-common/10-forward.ts +11 -0
- package/docs/API/10-lang/10-common/10-forwardAsserts.ts +17 -0
- package/docs/API/10-lang/10-common/10-forwardLog.ts +11 -0
- package/docs/API/10-lang/10-common/10-infer.ts +16 -0
- package/docs/API/10-lang/10-common/10-innerPipe.ts +23 -0
- package/docs/API/10-lang/10-common/10-instanceOf.ts +34 -0
- package/docs/API/10-lang/10-common/10-isType.ts +35 -0
- package/docs/API/10-lang/10-common/10-justExec.ts +28 -0
- package/docs/API/10-lang/10-common/10-justReturn.ts +19 -0
- package/docs/API/10-lang/10-common/10-loop.ts +18 -0
- package/docs/API/10-lang/10-common/10-loopAccumulator.ts +35 -0
- package/docs/API/10-lang/10-common/10-loopAccumulatorFrom.ts +29 -0
- package/docs/API/10-lang/10-common/10-memo.ts +12 -0
- package/docs/API/10-lang/10-common/10-memoObject.ts +11 -0
- package/docs/API/10-lang/10-common/10-memoPromise.ts +16 -0
- package/docs/API/10-lang/10-common/10-or.ts +43 -0
- package/docs/API/10-lang/10-common/10-pipe.ts +21 -0
- package/docs/API/10-lang/10-common/10-pipeCall.ts +20 -0
- package/docs/API/10-lang/10-common/10-prepareAsyncPipe.ts +20 -0
- package/docs/API/10-lang/10-common/10-preparePipe.ts +20 -0
- package/docs/API/10-lang/10-common/10-promiseAll.ts +16 -0
- package/docs/API/10-lang/10-common/10-promiseObject.ts +22 -0
- package/docs/API/10-lang/10-common/10-removeConstraint.ts +13 -0
- package/docs/API/10-lang/10-common/10-shameOnYou.ts +20 -0
- package/docs/API/10-lang/10-common/10-simpleClone.ts +12 -0
- package/docs/API/10-lang/10-common/10-stringToBytes.ts +16 -0
- package/docs/API/10-lang/10-common/10-stringToMillisecond.ts +17 -0
- package/docs/API/10-lang/10-common/10-tap.ts +28 -0
- package/docs/API/10-lang/10-common/10-timeout.ts +11 -0
- package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
- package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
- package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
- package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
- package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
- package/docs/API/10-lang/10-common/10-truthy.ts +31 -0
- package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
- package/docs/API/10-lang/10-common/10-when.ts +27 -0
- package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
- package/docs/API/10-lang/10-common/10-whenNot.ts +57 -0
- package/docs/API/10-lang/10-common/index.llms.md +244 -0
- package/docs/API/10-lang/10-common/index.md +3 -0
- package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
- package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
- package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
- package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
- package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
- package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
- package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
- package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
- package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
- package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
- package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
- package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
- package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
- package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
- package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
- package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
- package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
- package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
- package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
- package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
- package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
- package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
- package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
- package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
- package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
- package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
- package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
- package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
- package/docs/API/10-lang/10-dataStructure/index.md +3 -0
- package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
- package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +25 -0
- package/docs/API/10-lang/10-either/10-error.ts +12 -0
- package/docs/API/10-lang/10-either/10-expect.ts +13 -0
- package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
- package/docs/API/10-lang/10-either/10-fail.ts +12 -0
- package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
- package/docs/API/10-lang/10-either/10-group.ts +58 -0
- package/docs/API/10-lang/10-either/10-hasInformation.ts +30 -0
- package/docs/API/10-lang/10-either/10-isLeft.ts +25 -0
- package/docs/API/10-lang/10-either/10-isRight.ts +25 -0
- package/docs/API/10-lang/10-either/10-isSelected.ts +41 -0
- package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
- package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
- package/docs/API/10-lang/10-either/10-left.ts +13 -0
- package/docs/API/10-lang/10-either/10-matchInformation.ts +28 -0
- 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 +29 -0
- package/docs/API/10-lang/10-either/10-none.ts +12 -0
- package/docs/API/10-lang/10-either/10-ok.ts +12 -0
- package/docs/API/10-lang/10-either/10-result.ts +18 -0
- package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
- package/docs/API/10-lang/10-either/10-right.ts +13 -0
- package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +70 -0
- package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
- package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
- package/docs/API/10-lang/10-either/10-some.ts +12 -0
- package/docs/API/10-lang/10-either/10-success.ts +12 -0
- package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
- package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
- package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
- package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
- package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
- package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
- package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
- package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
- package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
- package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
- package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
- package/docs/API/10-lang/10-either/10-whenHasInformation.ts +36 -0
- package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
- package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
- package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
- package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
- package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
- package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
- package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
- package/docs/API/10-lang/10-either/index.llms.md +196 -0
- package/docs/API/10-lang/10-either/index.md +3 -0
- package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
- package/docs/API/10-lang/10-generator/10-asyncConcat.ts +43 -0
- package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
- package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
- package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
- package/docs/API/10-lang/10-generator/10-asyncLoop.ts +50 -0
- package/docs/API/10-lang/10-generator/10-asyncLoopAccumulator.ts +40 -0
- package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
- package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
- package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
- package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
- package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
- package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
- package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
- package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
- package/docs/API/10-lang/10-generator/10-group.ts +44 -0
- package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
- package/docs/API/10-lang/10-generator/10-loop.ts +46 -0
- package/docs/API/10-lang/10-generator/10-loopAccumulator.ts +33 -0
- package/docs/API/10-lang/10-generator/10-loopAccumulatorFrom.ts +30 -0
- package/docs/API/10-lang/10-generator/10-map.ts +35 -0
- package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
- package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
- package/docs/API/10-lang/10-generator/index.llms.md +96 -0
- package/docs/API/10-lang/10-generator/index.md +3 -0
- 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-deepOverride.ts +35 -0
- package/docs/API/10-lang/10-object/10-discriminate.ts +102 -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 +88 -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/10-lang/index.md +3 -0
- package/docs/API/20-server/10-file/10-appendFile.ts +50 -0
- package/docs/API/20-server/10-file/10-appendTextFile.ts +49 -0
- package/docs/API/20-server/10-file/10-copy.ts +50 -0
- package/docs/API/20-server/10-file/10-createEntryInterface.ts +13 -0
- package/docs/API/20-server/10-file/10-createFileInterface.ts +22 -0
- package/docs/API/20-server/10-file/10-createFolderInterface.ts +20 -0
- package/docs/API/20-server/10-file/10-createUnknownEntryInterface.ts +13 -0
- package/docs/API/20-server/10-file/10-ensureDirectory.ts +39 -0
- package/docs/API/20-server/10-file/10-ensureFile.ts +40 -0
- package/docs/API/20-server/10-file/10-exists.ts +36 -0
- package/docs/API/20-server/10-file/10-link.ts +51 -0
- package/docs/API/20-server/10-file/10-linkStat.ts +37 -0
- package/docs/API/20-server/10-file/10-makeDirectory.ts +41 -0
- package/docs/API/20-server/10-file/10-makeTemporaryDirectory.ts +35 -0
- package/docs/API/20-server/10-file/10-makeTemporaryFile.ts +40 -0
- package/docs/API/20-server/10-file/10-move.ts +51 -0
- package/docs/API/20-server/10-file/10-readDirectory.ts +52 -0
- package/docs/API/20-server/10-file/10-readFile.ts +38 -0
- package/docs/API/20-server/10-file/10-readJsonFile.ts +38 -0
- package/docs/API/20-server/10-file/10-readLink.ts +37 -0
- package/docs/API/20-server/10-file/10-readTextFile.ts +38 -0
- package/docs/API/20-server/10-file/10-realPath.ts +36 -0
- package/docs/API/20-server/10-file/10-relocate.ts +51 -0
- package/docs/API/20-server/10-file/10-remove.ts +40 -0
- package/docs/API/20-server/10-file/10-rename.ts +43 -0
- package/docs/API/20-server/10-file/10-setMode.ts +37 -0
- package/docs/API/20-server/10-file/10-setOwner.ts +38 -0
- package/docs/API/20-server/10-file/10-setTime.ts +42 -0
- package/docs/API/20-server/10-file/10-stat.ts +37 -0
- package/docs/API/20-server/10-file/10-symlink.ts +49 -0
- package/docs/API/20-server/10-file/10-truncate.ts +41 -0
- package/docs/API/20-server/10-file/10-walkDirectory.ts +75 -0
- package/docs/API/20-server/10-file/10-writeFile.ts +50 -0
- package/docs/API/20-server/10-file/10-writeJsonFile.ts +41 -0
- package/docs/API/20-server/10-file/10-writeTextFile.ts +49 -0
- package/docs/API/20-server/10-file/index.llms.md +144 -0
- package/docs/API/20-server/10-file/index.md +3 -0
- package/docs/API/20-server/20-common/10-environmentVariable.ts +57 -0
- package/docs/API/20-server/20-common/10-environmentVariableOrThrow.ts +21 -0
- package/docs/API/20-server/20-common/10-exitProcess.ts +9 -0
- package/docs/API/20-server/20-common/10-getCurrentDirectoryName.ts +10 -0
- package/docs/API/20-server/20-common/10-getCurrentWorkDirectory.ts +10 -0
- package/docs/API/20-server/20-common/10-getCurrentWorkDirectoryOrThrow.ts +10 -0
- package/docs/API/20-server/20-common/10-getProcessArguments.ts +10 -0
- package/docs/API/20-server/20-common/10-setCurrentWorkingDirectory.ts +14 -0
- package/docs/API/20-server/20-common/10-setCurrentWorkingDirectoryOrThrow.ts +12 -0
- package/docs/API/20-server/20-common/index.llms.md +40 -0
- package/docs/API/20-server/20-common/index.md +3 -0
- package/docs/API/20-server/30-dataStructure/10-file.ts +14 -0
- package/docs/API/20-server/30-dataStructure/10-fileExist.ts +27 -0
- package/docs/API/20-server/30-dataStructure/10-folder.ts +14 -0
- package/docs/API/20-server/30-dataStructure/10-folderExist.ts +14 -0
- package/docs/API/20-server/30-dataStructure/10-mimeType.ts +14 -0
- package/docs/API/20-server/30-dataStructure/10-size.ts +32 -0
- package/docs/API/20-server/30-dataStructure/index.llms.md +28 -0
- package/docs/API/20-server/30-dataStructure/index.md +3 -0
- package/docs/API/20-server/40-command/10-create.ts +39 -0
- package/docs/API/20-server/40-command/10-createArgument.ts +39 -0
- package/docs/API/20-server/40-command/10-createArrayOption.ts +36 -0
- package/docs/API/20-server/40-command/10-createBooleanOption.ts +28 -0
- package/docs/API/20-server/40-command/10-createOption.ts +46 -0
- package/docs/API/20-server/40-command/10-exec.ts +51 -0
- package/docs/API/20-server/40-command/10-execOptions.ts +30 -0
- package/docs/API/20-server/40-command/index.llms.md +32 -0
- package/docs/API/20-server/40-command/index.md +3 -0
- package/docs/API/20-server/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/index.md +3 -0
- package/docs/API.llms.md +135 -0
- package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
- package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
- package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +41 -0
- package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +66 -0
- package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
- package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
- package/docs/concepts/01-fundamental/02-currying/01-use.ts +38 -0
- package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +190 -0
- package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +48 -0
- package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +51 -0
- package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
- package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
- package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +90 -0
- package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +90 -0
- package/docs/concepts/01-fundamental/03-either/30-composition.ts +80 -0
- package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +46 -0
- package/docs/concepts/01-fundamental/03-either/50-external-results.ts +72 -0
- package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
- package/docs/concepts/01-fundamental/03-either/index.md +3 -0
- package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
- package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +244 -0
- package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +86 -0
- package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +104 -0
- package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +162 -0
- package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +57 -0
- package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
- package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
- package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
- package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +85 -0
- package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +110 -0
- package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +89 -0
- package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +85 -0
- package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
- package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
- package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +191 -0
- package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +204 -0
- package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +272 -0
- package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
- package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
- package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
- package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +136 -0
- package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +158 -0
- package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +137 -0
- package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +73 -0
- package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +106 -0
- package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +160 -0
- package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +101 -0
- package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
- 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/01-fundamental/index.md +1 -0
- package/docs/concepts/02-server/10-file/10-manipulation.ts +52 -0
- package/docs/concepts/02-server/10-file/20-path.ts +72 -0
- package/docs/concepts/02-server/10-file/index.md +3 -0
- package/docs/concepts/02-server/20-http/10-init.ts +23 -0
- package/docs/concepts/02-server/20-http/20-route.ts +182 -0
- package/docs/concepts/02-server/20-http/30-routine.ts +188 -0
- package/docs/concepts/02-server/20-http/40-jwt.ts +149 -0
- package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
- package/docs/concepts/02-server/20-http/index.md +3 -0
- package/docs/concepts/02-server/30-environment/10-platform.ts +47 -0
- package/docs/concepts/02-server/30-environment/20-variable.ts +47 -0
- package/docs/concepts/02-server/30-environment/index.md +3 -0
- package/docs/concepts/02-server/40-command/10-use.ts +112 -0
- package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
- package/docs/concepts/02-server/40-command/index.md +3 -0
- package/docs/concepts/02-server/index.md +1 -0
- package/docs/concepts/03-client/10-http/10-init.ts +52 -0
- package/docs/concepts/03-client/10-http/20-request.ts +254 -0
- package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
- package/docs/concepts/03-client/10-http/index.md +3 -0
- package/docs/concepts/03-client/20-form/10-init.ts +98 -0
- package/docs/concepts/03-client/20-form/20-input.ts +103 -0
- package/docs/concepts/03-client/20-form/30-layout.ts +155 -0
- package/docs/concepts/03-client/20-form/40-template.ts +94 -0
- 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/03-client/20-form/index.md +3 -0
- package/docs/concepts/03-client/index.md +1 -0
- package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
- package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
- package/docs/concepts/04-tests/01-unit/index.md +3 -0
- package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
- package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
- package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
- package/docs/concepts/04-tests/02-e2e/index.md +3 -0
- package/docs/concepts/04-tests/index.md +1 -0
- package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +44 -0
- package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
- package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +50 -0
- package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +65 -0
- package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +35 -0
- 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 +3 -0
- package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +62 -0
- 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 +3 -0
- package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +47 -0
- package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +4 -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 +45 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +31 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +4 -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 +74 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +42 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +33 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +4 -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 +33 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +5 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
- 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 +32 -0
- 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 +118 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +35 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +59 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +3 -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 +4 -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 +16 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +4 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
- package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +46 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +45 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
- package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +4 -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 +13 -0
- package/docs/concepts/05-type-driven-design/index.md +3 -0
- package/docs/concepts.llms.md +521 -0
- package/instructions/coding-conventions.md +8 -0
- package/package.json +99 -3
- package/skills/command/SKILL.md +63 -0
- package/skills/command/references/examples/cli.ts +22 -0
- package/skills/command/references/examples/options-only.ts +27 -0
- package/skills/command/references/examples/preview-command.ts +57 -0
- package/skills/command/references/execution.md +31 -0
- package/skills/command/references/inputs.md +27 -0
- package/skills/fundamental/SKILL.md +80 -0
- package/skills/fundamental/references/composition.md +19 -0
- package/skills/fundamental/references/constraints-and-validation.md +24 -0
- package/skills/fundamental/references/examples/async-composition.ts +15 -0
- package/skills/fundamental/references/examples/cast.ts +18 -0
- package/skills/fundamental/references/examples/composition.ts +40 -0
- package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
- package/skills/fundamental/references/examples/error-propagation.ts +24 -0
- package/skills/fundamental/references/examples/generic-inference.ts +31 -0
- package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
- package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
- package/skills/fundamental/references/examples/infer.ts +21 -0
- package/skills/fundamental/references/examples/input-validation.ts +37 -0
- package/skills/fundamental/references/examples/iterations.ts +112 -0
- package/skills/fundamental/references/examples/result-selection.ts +65 -0
- package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
- package/skills/fundamental/references/iterations.md +24 -0
- package/skills/fundamental/references/results-and-errors.md +34 -0
- package/skills/http-client/SKILL.md +50 -0
- package/skills/http-client/references/configuration.md +11 -0
- package/skills/http-client/references/examples/client-expectations.ts +85 -0
- package/skills/http-client/references/examples/client-streams.ts +74 -0
- package/skills/http-client/references/examples/external-client.ts +78 -0
- package/skills/http-client/references/hooks.md +7 -0
- package/skills/http-client/references/responses.md +39 -0
- package/skills/http-client/references/streams.md +10 -0
- package/skills/http-server/SKILL.md +61 -0
- package/skills/http-server/references/examples/authentication.ts +42 -0
- package/skills/http-server/references/examples/contracts.ts +19 -0
- package/skills/http-server/references/examples/inferred-client.ts +54 -0
- package/skills/http-server/references/examples/initialize.ts +29 -0
- package/skills/http-server/references/examples/minimal-route.ts +17 -0
- package/skills/http-server/references/examples/protected-route.ts +29 -0
- package/skills/http-server/references/examples/rename-user-route.ts +52 -0
- package/skills/http-server/references/examples/user-checker.ts +26 -0
- package/skills/http-server/references/examples/user-route.ts +45 -0
- package/skills/http-server/references/initialization.md +33 -0
- package/skills/http-server/references/reusable-flows.md +40 -0
- package/skills/http-server/references/routes-and-floor.md +46 -0
- package/skills/modeling/SKILL.md +76 -0
- package/skills/modeling/references/domain.md +33 -0
- package/skills/modeling/references/orchestration.md +36 -0
- package/skills/server/SKILL.md +55 -0
- package/skills/server/references/environment.md +30 -0
- package/skills/server/references/examples/environment.ts +41 -0
- package/skills/server/references/examples/file-structure.ts +26 -0
- package/skills/server/references/examples/files.ts +52 -0
- package/skills/server/references/files.md +38 -0
- package/skills/server/references/structures.md +15 -0
- package/skills/test/SKILL.md +70 -0
- package/skills/test/references/examples/results.ts +95 -0
- package/skills/test/references/examples/server.ts +59 -0
- package/skills/test/references/results.md +21 -0
- package/skills/test/references/server.md +17 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Preuves de passage par une opération.
|
|
3
|
+
*
|
|
4
|
+
* Exiger dans les types qu’une valeur soit passée par un traitement préalable.
|
|
5
|
+
*/
|
|
6
|
+
import * as DModeling from "@duplojs/lang/modeling";
|
|
7
|
+
import * as DInvocation from "@duplojs/lang/invocation";
|
|
8
|
+
import * as DDataStructure from "@duplojs/lang/dataStructure";
|
|
9
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
10
|
+
import * as DEither from "@duplojs/lang/either";
|
|
11
|
+
|
|
12
|
+
// Certaines règles portent sur le parcours d’une valeur plutôt que sur sa seule forme.
|
|
13
|
+
const Id = DModeling.createNewType(
|
|
14
|
+
"Id",
|
|
15
|
+
DDataStructure.string(),
|
|
16
|
+
[DDataStructure.uuid()],
|
|
17
|
+
);
|
|
18
|
+
type Id = DDataStructure.StructureValue<typeof Id>;
|
|
19
|
+
|
|
20
|
+
interface Entity {
|
|
21
|
+
id: Id;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface IdGenerator {
|
|
25
|
+
// Evidence représente uniquement dans le typage la preuve produite par une opération.
|
|
26
|
+
// Le résultat ne porte pas seulement un Id, mais aussi la preuve "generated".
|
|
27
|
+
generateId(): Id & DInvocation.Evidence<"generated">;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const implementation: IdGenerator = {
|
|
31
|
+
generateId: () => DCommon.pipe(
|
|
32
|
+
"550e8400-e29b-41d4-a716-446655440000",
|
|
33
|
+
Id.map,
|
|
34
|
+
DEither.unwrapRightOrThrow,
|
|
35
|
+
|
|
36
|
+
// appendEvidence restitue la même valeur, sans propriété ni contrôle runtime.
|
|
37
|
+
// L'implémentation doit donc avoir établi la garantie avant d'ajouter la preuve.
|
|
38
|
+
// Cela fonctionne aussi avec les valeurs primitives.
|
|
39
|
+
DInvocation.appendEvidence("generated"),
|
|
40
|
+
),
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// GetEvidenceResult extrait du retour d'une méthode la valeur portant l'évidence demandée.
|
|
44
|
+
// createEntity exige ainsi l'Id avec la preuve "generated" du contrat de generateId.
|
|
45
|
+
// Deux méthodes annonçant la même valeur et la même évidence restent compatibles :
|
|
46
|
+
// pour distinguer leurs provenances, utiliser des noms d'évidence distincts.
|
|
47
|
+
declare function createEntity(
|
|
48
|
+
params: {
|
|
49
|
+
id: DInvocation.GetEvidenceResult<IdGenerator["generateId"], "generated">;
|
|
50
|
+
},
|
|
51
|
+
): Entity;
|
|
52
|
+
|
|
53
|
+
// La relation entre génération et création est exprimée dans la signature.
|
|
54
|
+
createEntity({ id: implementation.generateId() });
|
|
55
|
+
|
|
56
|
+
declare const idWithoutEvidence: Id;
|
|
57
|
+
// @ts-expect-error Un Id seul ne prouve pas le passage par la génération attendue.
|
|
58
|
+
createEntity({ id: idWithoutEvidence });
|
|
59
|
+
|
|
60
|
+
// Quand l'opération possède plusieurs issues, EvidenceResult associe chaque information
|
|
61
|
+
// à une valeur portant l'évidence du même nom. Comme appendEvidence, cette construction
|
|
62
|
+
// ne réalise pas la vérification : checkId doit réellement consulter le registre.
|
|
63
|
+
interface Registry {
|
|
64
|
+
checkId(id: Id): Promise<
|
|
65
|
+
| DInvocation.EvidenceResult<"id-available", Id>
|
|
66
|
+
| DInvocation.EvidenceResult<"id-already-registered", Id>
|
|
67
|
+
>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// GetEvidenceResult sélectionne ici une seule issue, même à travers la promesse et l'Either.
|
|
71
|
+
type AvailableId = DInvocation.GetEvidenceResult<Registry["checkId"], "id-available">;
|
|
72
|
+
type _CheckAvailableId = DCommon.ExpectType<AvailableId, Id & DInvocation.Evidence<"id-available">, "strict">;
|
|
73
|
+
|
|
74
|
+
declare function createRegisteredEntity(id: AvailableId): Entity;
|
|
75
|
+
|
|
76
|
+
// La couche appelante discrimine le résultat pour obtenir cette preuve.
|
|
77
|
+
// La disponibilité autorise la création ; l'autre issue devient un Left,
|
|
78
|
+
// propagé par rightAsyncPipe sans appeler createRegisteredEntity.
|
|
79
|
+
function registerEntity(registry: Registry, id: Id) {
|
|
80
|
+
return DEither.rightAsyncPipe(
|
|
81
|
+
DCommon.asyncPipe(
|
|
82
|
+
registry.checkId(id),
|
|
83
|
+
DEither.keepAsRightByInformation("id-available"),
|
|
84
|
+
),
|
|
85
|
+
createRegisteredEntity,
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
declare const alreadyRegisteredId: DInvocation.GetEvidenceResult<Registry["checkId"], "id-already-registered">;
|
|
90
|
+
// @ts-expect-error Le résultat d'une autre branche ne prouve pas la disponibilité.
|
|
91
|
+
createRegisteredEntity(alreadyRegisteredId);
|
|
92
|
+
|
|
93
|
+
// @ts-expect-error La méthode ne produit pas d'évidence nommée generated.
|
|
94
|
+
type UnsupportedEvidence = DInvocation.GetEvidenceResult<Registry["checkId"], "generated">;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Identité des fonctions dans les dépendances.
|
|
3
|
+
*
|
|
4
|
+
* Exiger une fonction identifiée au-delà de sa seule signature TypeScript.
|
|
5
|
+
*/
|
|
6
|
+
import * as DInvocation from "@duplojs/lang/invocation";
|
|
7
|
+
|
|
8
|
+
interface ActionService {
|
|
9
|
+
// Deux fonctions () => void ne sont pas nécessairement interchangeables dans le modèle.
|
|
10
|
+
// SignedFunction ajoute à cette signature l’identité de l’opération attendue.
|
|
11
|
+
someAction: DInvocation.SignedFunction<"someAction", () => void>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const implementation: ActionService = {
|
|
15
|
+
// signedFunction associe l’identité à l’implémentation.
|
|
16
|
+
// Cette information existe au runtime sur la fonction, contrairement à une Evidence.
|
|
17
|
+
someAction: DInvocation.signedFunction("someAction", () => void 0),
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// La dépendance exige précisément l’opération identifiée comme someAction.
|
|
21
|
+
declare function otherFunction(someFunction: ActionService["someAction"]): void;
|
|
22
|
+
|
|
23
|
+
otherFunction(implementation.someAction);
|
|
24
|
+
|
|
25
|
+
// @ts-expect-error Une même signature d’appel ne suffit pas sans l’identité attendue.
|
|
26
|
+
otherFunction(() => void 0);
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Discrimination des entités par identité.
|
|
3
|
+
*
|
|
4
|
+
* Sélection exhaustive ou partielle selon le nom métier, avec typage précis des branches.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DModeling from "@duplojs/lang/modeling";
|
|
8
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
9
|
+
|
|
10
|
+
// Une Entity porte une identité associée à son nom. Le matcher utilise cette identité,
|
|
11
|
+
// sans devoir déduire le cas à partir de la forme de l’objet ou de ses propriétés.
|
|
12
|
+
interface User extends DModeling.Entity<"User"> {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface Admin extends DModeling.Entity<"Admin"> {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly permissions: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type Entity =
|
|
23
|
+
| User
|
|
24
|
+
| Admin;
|
|
25
|
+
|
|
26
|
+
declare const entity: Entity;
|
|
27
|
+
|
|
28
|
+
// `matchWithEntity` discrimine une union à partir du nom de chaque `Entity`.
|
|
29
|
+
//
|
|
30
|
+
// La sélection est exhaustive : chaque entité présente dans l'union
|
|
31
|
+
// doit posséder un handler.
|
|
32
|
+
//
|
|
33
|
+
// Chaque callback reçoit directement le type précis correspondant
|
|
34
|
+
// au nom de l'entité.
|
|
35
|
+
|
|
36
|
+
const matchedEntity = DPattern.matchWithEntity(
|
|
37
|
+
entity,
|
|
38
|
+
{
|
|
39
|
+
User: (user) => {
|
|
40
|
+
type _CheckUser = DCommon.ExpectType<typeof user, User, "strict">;
|
|
41
|
+
return user.name;
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
Admin: (admin) => {
|
|
45
|
+
type _CheckAdmin = DCommon.ExpectType<typeof admin, Admin, "strict">;
|
|
46
|
+
return admin.permissions.length;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
);
|
|
50
|
+
type _CheckMatchedEntityLine37 = DCommon.ExpectType<
|
|
51
|
+
typeof matchedEntity,
|
|
52
|
+
string | number,
|
|
53
|
+
"strict"
|
|
54
|
+
>;
|
|
55
|
+
|
|
56
|
+
// La sélection exhaustive crée un point d'ancrage dans le typage.
|
|
57
|
+
//
|
|
58
|
+
// Si une nouvelle `Entity` est ajoutée à l'union, le matcher devra
|
|
59
|
+
// également définir son traitement.
|
|
60
|
+
//
|
|
61
|
+
// À l'inverse, une clé ne correspondant à aucune entité de l'union
|
|
62
|
+
// ne peut pas être ajoutée au matcher.
|
|
63
|
+
|
|
64
|
+
// `matchWithEntity` possède également une forme curried afin d'être
|
|
65
|
+
// directement utilisée dans un pipe.
|
|
66
|
+
|
|
67
|
+
const matchedEntityInPipe = DCommon.pipe(
|
|
68
|
+
entity,
|
|
69
|
+
DPattern.matchWithEntity({
|
|
70
|
+
User: (user) => {
|
|
71
|
+
type _CheckUser = DCommon.ExpectType<typeof user, User, "strict">;
|
|
72
|
+
return user.name;
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
Admin: (admin) => {
|
|
76
|
+
type _CheckAdmin = DCommon.ExpectType<typeof admin, Admin, "strict">;
|
|
77
|
+
return admin.permissions.length;
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
);
|
|
81
|
+
type _CheckMatchedEntityInPipeLine60 = DCommon.ExpectType<
|
|
82
|
+
typeof matchedEntityInPipe,
|
|
83
|
+
string | number,
|
|
84
|
+
"strict"
|
|
85
|
+
>;
|
|
86
|
+
|
|
87
|
+
// `matchWithEntityOtherwise` permet de ne sélectionner explicitement
|
|
88
|
+
// qu'une partie des entités.
|
|
89
|
+
//
|
|
90
|
+
// `otherwise` reçoit uniquement les entités qui n'ont pas déjà
|
|
91
|
+
// été prises en charge par le matcher.
|
|
92
|
+
|
|
93
|
+
const matchedEntityOtherwise = DPattern.matchWithEntityOtherwise(
|
|
94
|
+
entity,
|
|
95
|
+
{
|
|
96
|
+
User: (user) => {
|
|
97
|
+
type _CheckUser = DCommon.ExpectType<typeof user, User, "strict">;
|
|
98
|
+
return user.name;
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
(admin) => {
|
|
102
|
+
type _CheckAdmin = DCommon.ExpectType<typeof admin, Admin, "strict">;
|
|
103
|
+
return admin.permissions.length;
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
type _CheckMatchedEntityOtherwiseLine78 = DCommon.ExpectType<
|
|
107
|
+
typeof matchedEntityOtherwise,
|
|
108
|
+
string | number,
|
|
109
|
+
"strict"
|
|
110
|
+
>;
|
|
111
|
+
|
|
112
|
+
// La forme curried est également disponible.
|
|
113
|
+
//
|
|
114
|
+
// Le typage de `otherwise` évolue avec les handlers déjà déclarés.
|
|
115
|
+
// Il représente toujours précisément le reste de l'union.
|
|
116
|
+
|
|
117
|
+
const matchedEntityOtherwiseInPipe = DCommon.pipe(
|
|
118
|
+
entity,
|
|
119
|
+
DPattern.matchWithEntityOtherwise(
|
|
120
|
+
{
|
|
121
|
+
User: (user) => {
|
|
122
|
+
type _CheckUser = DCommon.ExpectType<typeof user, User, "strict">;
|
|
123
|
+
return user.name;
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
(admin) => {
|
|
127
|
+
type _CheckAdmin = DCommon.ExpectType<typeof admin, Admin, "strict">;
|
|
128
|
+
return admin.permissions.length;
|
|
129
|
+
},
|
|
130
|
+
),
|
|
131
|
+
);
|
|
132
|
+
type _CheckMatchedEntityOtherwiseInPipeLine94 = DCommon.ExpectType<
|
|
133
|
+
typeof matchedEntityOtherwiseInPipe,
|
|
134
|
+
string | number,
|
|
135
|
+
"strict"
|
|
136
|
+
>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Discrimination selon le fait courant.
|
|
3
|
+
*
|
|
4
|
+
* Choisir une branche selon la Fact portée par une valeur et accéder aux données du fait.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DModeling from "@duplojs/lang/modeling";
|
|
8
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
9
|
+
|
|
10
|
+
// Une Fact appliquée à une entité y conserve son nom et sa payload.
|
|
11
|
+
// La sélection porte sur ce fait courant, même lorsque toutes les variantes sont la même Entity.
|
|
12
|
+
interface UserCreatedFact extends DModeling.Fact<
|
|
13
|
+
"UserCreated",
|
|
14
|
+
{
|
|
15
|
+
name: string;
|
|
16
|
+
}
|
|
17
|
+
> {}
|
|
18
|
+
|
|
19
|
+
interface UserDeletedFact extends DModeling.Fact<
|
|
20
|
+
"UserDeleted",
|
|
21
|
+
{
|
|
22
|
+
reason: string;
|
|
23
|
+
}
|
|
24
|
+
> {}
|
|
25
|
+
|
|
26
|
+
type UserCreated = (
|
|
27
|
+
& DModeling.Entity<"User">
|
|
28
|
+
& {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
}
|
|
31
|
+
& UserCreatedFact
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
type UserDeleted = (
|
|
35
|
+
& DModeling.Entity<"User">
|
|
36
|
+
& {
|
|
37
|
+
readonly id: string;
|
|
38
|
+
}
|
|
39
|
+
& UserDeletedFact
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
type User =
|
|
43
|
+
| UserCreated
|
|
44
|
+
| UserDeleted;
|
|
45
|
+
|
|
46
|
+
declare const user: User;
|
|
47
|
+
|
|
48
|
+
// `matchWithFact` discrimine une union à partir du nom de la `Fact`
|
|
49
|
+
// portée par chaque valeur.
|
|
50
|
+
//
|
|
51
|
+
// La sélection est exhaustive : chaque fact présente dans l'union
|
|
52
|
+
// doit posséder un handler.
|
|
53
|
+
//
|
|
54
|
+
// Chaque callback reçoit directement la valeur avec la `Fact` précise
|
|
55
|
+
// correspondant au nom sélectionné. La payload est accessible sur cette valeur avec factKind.
|
|
56
|
+
// Cette lecture fonctionne dans les formes directe et curifiée.
|
|
57
|
+
|
|
58
|
+
const matchedFact = DPattern.matchWithFact(
|
|
59
|
+
user,
|
|
60
|
+
{
|
|
61
|
+
UserCreated: (createdUser) => {
|
|
62
|
+
type _CheckCreatedUser = DCommon.ExpectType<typeof createdUser, UserCreated, "strict">;
|
|
63
|
+
return DModeling.factKind.getValue(createdUser).payload.name;
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
UserDeleted: (deletedUser) => {
|
|
67
|
+
type _CheckDeletedUser = DCommon.ExpectType<typeof deletedUser, UserDeleted, "strict">;
|
|
68
|
+
return DModeling.factKind.getValue(deletedUser).payload.reason.length;
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
);
|
|
72
|
+
type _CheckMatchedFactLine59 = DCommon.ExpectType<
|
|
73
|
+
typeof matchedFact,
|
|
74
|
+
string | number,
|
|
75
|
+
"strict"
|
|
76
|
+
>;
|
|
77
|
+
|
|
78
|
+
// La sélection exhaustive crée un point d'ancrage dans le typage.
|
|
79
|
+
//
|
|
80
|
+
// Si une nouvelle `Fact` est ajoutée à l'union, le matcher devra
|
|
81
|
+
// également définir son traitement.
|
|
82
|
+
//
|
|
83
|
+
// À l'inverse, une clé ne correspondant à aucune fact de l'union
|
|
84
|
+
// ne peut pas être ajoutée au matcher.
|
|
85
|
+
|
|
86
|
+
// `matchWithFact` possède également une forme curried afin d'être
|
|
87
|
+
// directement utilisée dans un pipe.
|
|
88
|
+
|
|
89
|
+
const matchedFactInPipe = DCommon.pipe(
|
|
90
|
+
user,
|
|
91
|
+
DPattern.matchWithFact({
|
|
92
|
+
UserCreated: (createdUser) => {
|
|
93
|
+
type _CheckCreatedUser = DCommon.ExpectType<typeof createdUser, UserCreated, "strict">;
|
|
94
|
+
return DModeling.factKind.getValue(createdUser).payload.name;
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
UserDeleted: (deletedUser) => {
|
|
98
|
+
type _CheckDeletedUser = DCommon.ExpectType<typeof deletedUser, UserDeleted, "strict">;
|
|
99
|
+
return DModeling.factKind.getValue(deletedUser).payload.reason.length;
|
|
100
|
+
},
|
|
101
|
+
}),
|
|
102
|
+
);
|
|
103
|
+
type _CheckMatchedFactInPipeLine86 = DCommon.ExpectType<
|
|
104
|
+
typeof matchedFactInPipe,
|
|
105
|
+
string | number,
|
|
106
|
+
"strict"
|
|
107
|
+
>;
|
|
108
|
+
|
|
109
|
+
// `matchWithFactOtherwise` permet de ne sélectionner explicitement
|
|
110
|
+
// qu'une partie des facts.
|
|
111
|
+
//
|
|
112
|
+
// `otherwise` reçoit uniquement les valeurs portant les facts
|
|
113
|
+
// qui n'ont pas déjà été prises en charge par le matcher.
|
|
114
|
+
|
|
115
|
+
const matchedFactOtherwise = DPattern.matchWithFactOtherwise(
|
|
116
|
+
user,
|
|
117
|
+
{
|
|
118
|
+
UserCreated: (createdUser) => {
|
|
119
|
+
type _CheckCreatedUser = DCommon.ExpectType<typeof createdUser, UserCreated, "strict">;
|
|
120
|
+
return DModeling.factKind.getValue(createdUser).payload.name;
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
(deletedUser) => {
|
|
124
|
+
type _CheckDeletedUser = DCommon.ExpectType<typeof deletedUser, UserDeleted, "strict">;
|
|
125
|
+
return deletedUser;
|
|
126
|
+
},
|
|
127
|
+
);
|
|
128
|
+
type _CheckMatchedFactOtherwiseLine108 = DCommon.ExpectType<
|
|
129
|
+
typeof matchedFactOtherwise,
|
|
130
|
+
string | UserDeleted,
|
|
131
|
+
"strict"
|
|
132
|
+
>;
|
|
133
|
+
|
|
134
|
+
// La forme curried est également disponible.
|
|
135
|
+
//
|
|
136
|
+
// Le typage de `otherwise` évolue avec les handlers déjà déclarés.
|
|
137
|
+
// Il représente toujours précisément le reste de l'union de facts.
|
|
138
|
+
|
|
139
|
+
const matchedFactOtherwiseInPipe = DCommon.pipe(
|
|
140
|
+
user,
|
|
141
|
+
DPattern.matchWithFactOtherwise(
|
|
142
|
+
{
|
|
143
|
+
UserCreated: (createdUser) => {
|
|
144
|
+
type _CheckCreatedUser = DCommon.ExpectType<typeof createdUser, UserCreated, "strict">;
|
|
145
|
+
return DModeling.factKind.getValue(createdUser).payload.name;
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
(deletedUser) => {
|
|
149
|
+
type _CheckDeletedUser = DCommon.ExpectType<typeof deletedUser, UserDeleted, "strict">;
|
|
150
|
+
return deletedUser;
|
|
151
|
+
},
|
|
152
|
+
),
|
|
153
|
+
);
|
|
154
|
+
type _CheckMatchedFactOtherwiseInPipeLine128 = DCommon.ExpectType<
|
|
155
|
+
typeof matchedFactOtherwiseInPipe,
|
|
156
|
+
string | UserDeleted,
|
|
157
|
+
"strict"
|
|
158
|
+
>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Discrimination des objets par tag.
|
|
3
|
+
*
|
|
4
|
+
* Identifier la forme d’un objet par son tag et traiter tout ou partie de l’union.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import type * as DModeling from "@duplojs/lang/modeling";
|
|
8
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
9
|
+
|
|
10
|
+
// Le tag fait partie de la donnée et identifie chaque TaggedObject.
|
|
11
|
+
// Le matcher l’utilise pour distinguer les variantes indépendamment de leurs propriétés.
|
|
12
|
+
interface EmailNotification extends DModeling.ObjectTag<"EmailNotification"> {
|
|
13
|
+
readonly email: string;
|
|
14
|
+
readonly subject: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface SmsNotification extends DModeling.ObjectTag<"SmsNotification"> {
|
|
18
|
+
readonly phone: string;
|
|
19
|
+
readonly message: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type Notification =
|
|
23
|
+
| EmailNotification
|
|
24
|
+
| SmsNotification;
|
|
25
|
+
|
|
26
|
+
declare const notification: Notification;
|
|
27
|
+
|
|
28
|
+
// `matchWithTaggedObject` discrimine une union à partir du tag
|
|
29
|
+
// porté par chaque `TaggedObject`.
|
|
30
|
+
//
|
|
31
|
+
// La sélection est exhaustive : chaque tag présent dans l'union
|
|
32
|
+
// doit posséder un handler.
|
|
33
|
+
//
|
|
34
|
+
// Chaque callback reçoit directement le `TaggedObject` précis
|
|
35
|
+
// correspondant au tag sélectionné.
|
|
36
|
+
|
|
37
|
+
const matchedNotification = DPattern.matchWithTaggedObject(
|
|
38
|
+
notification,
|
|
39
|
+
{
|
|
40
|
+
EmailNotification: (emailNotification) => {
|
|
41
|
+
type _CheckEmailNotification = DCommon.ExpectType<typeof emailNotification, EmailNotification, "strict">;
|
|
42
|
+
return emailNotification.email;
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
SmsNotification: (smsNotification) => {
|
|
46
|
+
type _CheckSmsNotification = DCommon.ExpectType<typeof smsNotification, SmsNotification, "strict">;
|
|
47
|
+
return smsNotification.phone;
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
);
|
|
51
|
+
type _CheckMatchedNotificationLine38 = DCommon.ExpectType<
|
|
52
|
+
typeof matchedNotification,
|
|
53
|
+
string,
|
|
54
|
+
"strict"
|
|
55
|
+
>;
|
|
56
|
+
|
|
57
|
+
// La sélection exhaustive crée un point d'ancrage dans le typage.
|
|
58
|
+
//
|
|
59
|
+
// Si un nouveau `TaggedObject` est ajouté à l'union, le matcher devra
|
|
60
|
+
// également définir son traitement.
|
|
61
|
+
//
|
|
62
|
+
// À l'inverse, une clé ne correspondant à aucun tag de l'union
|
|
63
|
+
// ne peut pas être ajoutée au matcher.
|
|
64
|
+
|
|
65
|
+
// `matchWithTaggedObject` possède également une forme curried afin d'être
|
|
66
|
+
// directement utilisée dans un pipe.
|
|
67
|
+
|
|
68
|
+
const matchedNotificationInPipe = DCommon.pipe(
|
|
69
|
+
notification,
|
|
70
|
+
DPattern.matchWithTaggedObject({
|
|
71
|
+
EmailNotification: (emailNotification) => {
|
|
72
|
+
type _CheckEmailNotification = DCommon.ExpectType<typeof emailNotification, EmailNotification, "strict">;
|
|
73
|
+
return emailNotification.email;
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
SmsNotification: (smsNotification) => {
|
|
77
|
+
type _CheckSmsNotification = DCommon.ExpectType<typeof smsNotification, SmsNotification, "strict">;
|
|
78
|
+
return smsNotification.phone;
|
|
79
|
+
},
|
|
80
|
+
}),
|
|
81
|
+
);
|
|
82
|
+
type _CheckMatchedNotificationInPipeLine61 = DCommon.ExpectType<
|
|
83
|
+
typeof matchedNotificationInPipe,
|
|
84
|
+
string,
|
|
85
|
+
"strict"
|
|
86
|
+
>;
|
|
87
|
+
|
|
88
|
+
// `matchWithTaggedObjectOtherwise` permet de ne sélectionner explicitement
|
|
89
|
+
// qu'une partie des tags.
|
|
90
|
+
//
|
|
91
|
+
// `otherwise` reçoit uniquement les `TaggedObject` qui n'ont pas déjà
|
|
92
|
+
// été pris en charge par le matcher.
|
|
93
|
+
|
|
94
|
+
const matchedNotificationOtherwise = DPattern.matchWithTaggedObjectOtherwise(
|
|
95
|
+
notification,
|
|
96
|
+
{
|
|
97
|
+
EmailNotification: (emailNotification) => {
|
|
98
|
+
type _CheckEmailNotification = DCommon.ExpectType<typeof emailNotification, EmailNotification, "strict">;
|
|
99
|
+
return emailNotification.email;
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
(smsNotification) => {
|
|
103
|
+
type _CheckSmsNotification = DCommon.ExpectType<typeof smsNotification, SmsNotification, "strict">;
|
|
104
|
+
return smsNotification.phone;
|
|
105
|
+
},
|
|
106
|
+
);
|
|
107
|
+
type _CheckMatchedNotificationOtherwiseLine79 = DCommon.ExpectType<
|
|
108
|
+
typeof matchedNotificationOtherwise,
|
|
109
|
+
string,
|
|
110
|
+
"strict"
|
|
111
|
+
>;
|
|
112
|
+
|
|
113
|
+
// La forme curried est également disponible.
|
|
114
|
+
//
|
|
115
|
+
// Le typage de `otherwise` évolue avec les handlers déjà déclarés.
|
|
116
|
+
// Il représente toujours précisément le reste de l'union de `TaggedObject`.
|
|
117
|
+
|
|
118
|
+
const matchedNotificationOtherwiseInPipe = DCommon.pipe(
|
|
119
|
+
notification,
|
|
120
|
+
DPattern.matchWithTaggedObjectOtherwise(
|
|
121
|
+
{
|
|
122
|
+
EmailNotification: (emailNotification) => {
|
|
123
|
+
type _CheckEmailNotification = DCommon.ExpectType<typeof emailNotification, EmailNotification, "strict">;
|
|
124
|
+
return emailNotification.email;
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
(smsNotification) => {
|
|
128
|
+
type _CheckSmsNotification = DCommon.ExpectType<typeof smsNotification, SmsNotification, "strict">;
|
|
129
|
+
return smsNotification.phone;
|
|
130
|
+
},
|
|
131
|
+
),
|
|
132
|
+
);
|
|
133
|
+
type _CheckMatchedNotificationOtherwiseInPipeLine95 = DCommon.ExpectType<
|
|
134
|
+
typeof matchedNotificationOtherwiseInPipe,
|
|
135
|
+
string,
|
|
136
|
+
"strict"
|
|
137
|
+
>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Discrimination des erreurs par identifiant.
|
|
3
|
+
*
|
|
4
|
+
* Sélection exhaustive ou partielle des erreurs DuploJS, avec typage précis des branches et des cas restants.
|
|
5
|
+
*/
|
|
6
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
8
|
+
|
|
9
|
+
// Le matcher sélectionne l'identifiant porté par le kind d'une DuploJSError.
|
|
10
|
+
// Cet identifiant est fixé ici par parentClass ; il ne dépend ni du message
|
|
11
|
+
// ni du nom de la classe.
|
|
12
|
+
class InvalidInputError extends DCommon.DuploJSError.parentClass("invalid-input") {}
|
|
13
|
+
class UnavailableServiceError extends DCommon.DuploJSError.parentClass("unavailable-service", Error) {}
|
|
14
|
+
|
|
15
|
+
type OperationError =
|
|
16
|
+
| InvalidInputError
|
|
17
|
+
| UnavailableServiceError;
|
|
18
|
+
|
|
19
|
+
declare const error: OperationError;
|
|
20
|
+
|
|
21
|
+
// matchWithError exige un handler pour chaque identifiant de l'union
|
|
22
|
+
// et refuse les clés étrangères à celle-ci. Ajouter une erreur au contrat
|
|
23
|
+
// impose donc de compléter le matcher.
|
|
24
|
+
// Chaque callback reçoit l'erreur précise, avec ses propriétés et sa cause typées.
|
|
25
|
+
|
|
26
|
+
const matchedError = DPattern.matchWithError(
|
|
27
|
+
error,
|
|
28
|
+
{
|
|
29
|
+
"invalid-input": (invalidInput) => {
|
|
30
|
+
type _CheckInvalidInput = DCommon.ExpectType<typeof invalidInput, InvalidInputError, "strict">;
|
|
31
|
+
return invalidInput.message;
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
"unavailable-service": (unavailableService) => {
|
|
35
|
+
type _CheckUnavailableService = DCommon.ExpectType<typeof unavailableService, UnavailableServiceError, "strict">;
|
|
36
|
+
return unavailableService.cause;
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
);
|
|
40
|
+
type _CheckMatchedErrorLine27 = DCommon.ExpectType<
|
|
41
|
+
typeof matchedError,
|
|
42
|
+
string | Error,
|
|
43
|
+
"strict"
|
|
44
|
+
>;
|
|
45
|
+
|
|
46
|
+
// matchWithErrorOtherwise sélectionne explicitement une partie des identifiants.
|
|
47
|
+
// Le callback otherwise reçoit uniquement les erreurs non prises en charge.
|
|
48
|
+
// Les deux fonctions existent en forme directe et curried, utilisable dans un pipe.
|
|
49
|
+
|
|
50
|
+
const matchedErrorOtherwise = DCommon.pipe(
|
|
51
|
+
error,
|
|
52
|
+
DPattern.matchWithErrorOtherwise(
|
|
53
|
+
{
|
|
54
|
+
"invalid-input": (invalidInput) => {
|
|
55
|
+
type _CheckInvalidInput = DCommon.ExpectType<typeof invalidInput, InvalidInputError, "strict">;
|
|
56
|
+
return invalidInput.message;
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
(unavailableService) => {
|
|
60
|
+
type _CheckUnavailableService = DCommon.ExpectType<typeof unavailableService, UnavailableServiceError, "strict">;
|
|
61
|
+
return unavailableService.cause;
|
|
62
|
+
},
|
|
63
|
+
),
|
|
64
|
+
);
|
|
65
|
+
type _CheckMatchedErrorOtherwiseLine43 = DCommon.ExpectType<
|
|
66
|
+
typeof matchedErrorOtherwise,
|
|
67
|
+
string | Error,
|
|
68
|
+
"strict"
|
|
69
|
+
>;
|
|
70
|
+
|
|
71
|
+
// Ces matchers attendent des DuploJSError dont les identifiants sont des types
|
|
72
|
+
// littéraux connus. Conserver l'union précise : Error natif et DuploJSError
|
|
73
|
+
// sans identifiant littéral ne fournissent pas ce contrat de discrimination.
|