1.0.0 • Published 1 year ago

@ryniaubenpm2/ut-commodi-quidem v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@ryniaubenpm2/ut-commodi-quidem

Common Data Representation serialization and deserialization library

npm version

Introduction

Common Data Representation (CDR) defines a serialization format for primitive types. When combined with an Interface Definition Language (IDL) it can be used to create complex types that can be serialized to disk, transmitted over the network, etc. while transparently handling endianness and alignment requirements. It's specified by https://www.omg.org/spec/DDSI-RTPS/2.3/PDF (chapter 10) and https://www.omg.org/cgi-bin/doc?formal/02-06-51.

XCDR implementation follows DDS-XTypes V1.3 specification.

CDR is found in OMG DDS (Data Distributed Service) implementations such as the Real-Time Publish Subscribe (RTPS) protocol. This is the wire protocol found in ROS2, and CDR is the default serialization format used in rosbag2.

Usage

import { CdrReader, CdrSizeCalculator, CdrWriter } from "@ryniaubenpm2/ut-commodi-quidem";

const calc = new CdrSizeCalculator();
calc.int8();
calc.uint8();
calc.int16();
calc.uint16();
calc.int32();
calc.uint32();
calc.int64();
calc.uint64();
calc.float32();
calc.float64();
calc.string("abc".length);
calc.sequenceLength();
console.log(calc.size);

const writer = new CdrWriter();
writer.int8(-1);
writer.uint8(2);
writer.int16(-300);
writer.uint16(400);
writer.int32(-500_000);
writer.uint32(600_000);
writer.int64(-7_000_000_001n);
writer.uint64(8_000_000_003n);
writer.float32(-9.14);
writer.float64(1.7976931348623158e100);
writer.string("abc");
writer.sequenceLength(0);

const reader = new CdrReader(writer.data);
console.log(reader.int8());
console.log(reader.uint8());
console.log(reader.int16());
console.log(reader.uint16());
console.log(reader.int32());
console.log(reader.uint32());
console.log(reader.int64());
console.log(reader.uint64());
console.log(reader.float32());
console.log(reader.float64());
console.log(reader.string());
console.log(reader.sequenceLength());

Alternatives

jscdr - Does not support bigint, pre-allocated buffers, or buffer length calculations.

License

@ryniaubenpm2/ut-commodi-quidem is licensed under the MIT License.

Releasing

  1. Run yarn version --[major|minor|patch] to bump version
  2. Run git push && git push --tags to push new tag
  3. GitHub Actions will take care of the rest

Stay in touch

Join our Slack channel to ask questions, share feedback, and stay up to date on what our team is working on.

UnderscoreFloat64ArrayasciibrowserslistdefinestylesheetECMAScript 2016clilibphonenumberoptimizerdescriptorsscheme-validationBigInt64ArraygroupBysomeqsinputcoreweaksetrequireunicodeinMicrosoftparentses2018ES2017eventDispatcherregexrestequaleventsSetconsumecryptasyncSymbolbootstrap cssloggingfunctionalcallIteratorreact-hookscryptospeedajaxxhrwarningmacosnegative zerotrimLeftparserprotoReflect.getPrototypeOffiledatastructureregexpremovemkdirexit-codelesscssrouterbyteLengthtestobjectspinnerregular expressionObject.valuesHyBiUint32ArrayeventEmittercontainselbelasticachei18nhasOwnSymbol.toStringTagdebuggerES2020formatfluxminimalsettingsshrinkwrapconcurrencyairbnbwordbreakxtermTypeScriptcss lesslengthcodesexpressioncall-bindreactmatchAllpropertysyntaxerrorPromisetakeless cssmapreducetypescriptroutesymlinksprunetapsameValueZerolook-uptypedarraybcryptAsyncIteratorlivefullwidthjoiflatteninternalqueuewgetstringifyRegExp.prototype.flagses6argumentjQueryArray.prototype.findLastrategetoptrequestarraysvariablesreusecensorconcatURLkinesisnamesJSONcore-jssetrobustJSON-SchemawalkslicePushpatchisstringbannervalidcode pointsfast-clonedependency managerapiES2016validationtoSortedfinduppyyamlelectrongetPrototypeOfreact-hook-formhookformruntimecolorviewwaitthrottlefastclonequerystringbreakInt32Arraygradients cssreadablestreamObjectobjemojies2017genericsincludestasklinkutilitiesjsxdeepenvponyfilljasminecorses8fast-deep-clonermlogmimefull-widthpackage managerfastifysestermnpmcheckwebcharactersforEachbinddeterministicdeepcopystylingmochasearchpropertiesflagcolorsESnextchannelemitECMAScript 2020eslintpluginhardlinksshamreal-timeutilitystreamswatchFileflatArray.prototype.flatMaphigher-ordereast-asian-widthexitefficientObject.assignreadableRFC-6455ECMAScript 2018RxES2021makeprotobufwindowsreducestdlibgetiamtrimRightframeworkES8Uint8ClampedArray@@toStringTagstatusdropfrominternal slotsignalsECMAScript 6pathqueueMicrotaskvesthttpsigtermwordwrapajvroutingObservableoncetrimpushdotenvObservablesprophandlersformmake dirspinnerscreatefigletcomputed-typesdeepclone_.extendratelimitpluginvpcextensionsetPrototypeOfdependenciesReactiveExtensionsarrayglacierassertsspecsymbolspipeimmutablestreamwhatwgnopeconcatMapbatchtypesinstallmergeCSSStyleDeclarationstringifierquotemkdirpebsUint16ArrayredactoutputpromiseslimitedcommandInt8ArraydomfindLastIndexjesttoolsfindLastpredictablecoerciblejwtinterruptsvaluetoArraynegativeexecObject.getPrototypeOfserializercompile less__proto__RegExp#flagsinspectObject.entrieseslintlockfilermdirthroatpackagesecmascriptimportcolumnsuperstructes-shimsfixed-widthzodfstelephonejsonmaps3rm -rfpostcss-plugineshasOwnPropertynested cssmomenttoobjecttimeYAMLuperror-handlingsortamazondateECMAScript 2023koreanutiltyped arraybuffersArray.prototype.flatcallboundcallbindduplexES2019estreemodulestableshebangcomparewatchingFunction.prototype.nameidlelazyformsdifftostringtagtouchclassnameidfiltertypesafeschemeresolvedescriptioncloudformationstructuredCloneredux-toolkitpnpm9form-validationRxJSequalityArray.prototype.filterguidloadingloggercss variabletapeparsingwatchersqscolumnsiteratesafeprogressless compilerlookstyleguidecollection.es6sortedmimetypesproxyInt16ArraykeyStreamArray.prototype.findLastIndexmodulesstylematchesagentString.prototype.trimMappassworddayjsprivate dataeslintconfigcompilerES2023serializeless mixinsgradients css3CSSprettyfunctionsArrayBuffer.prototype.sliceObject.keysgetintrinsicprivatestreams2ECMAScript 2021connectES2018Float32ArrayautoscalingcloneenderES3circulartypedphoneyupbuffertypeerrorendpointbytetrimStartawschineseECMAScript 2017autoprefixerreact-testing-librarypostcssopenUint8ArrayswfsyntaxrapidconsoleURLSearchParamsansitypewrapcall-boundparseregular expressionsslotcjkArray.prototype.includesio-tsArrayBuffer#sliceWeakSetECMAScript 2022protocol-buffersmiddlewareurlArrayBufferless.jsuninstallECMAScript 5cloudwatchec2flatMapenvironmentrgboptimistclassnamessigintclassespositiveyamlpolyfilleveryloadbalancingcopywalkingclass-validatorirqavakeysargparsesidetesterlinuxtextdataViewpreprocessorargsmetadatamkdirsvalidatesymbolshellprototypeECMAScript 3callbackcachereadsetterwhichworkflowterminalhelpershashomitimmercommanderroute53symlinkrandomextraes7arraybufferindicatorwatchbundlingjsBigUint64Arraycloudsearchassertiondynamodb0getterbundlerWeakMapsetImmediaterfc4122util.inspectdescriptordeep-copyreplayworkspace:*offsetdirectoryes5.envgroupObject.isstate$.extendObject.fromEntriesdebugsharedarktypepackagereducerTypedArraytsformattingdatacssreduxboundschematslibregulartraverseString.prototype.matchAllstatelesses2015shimaccessorstarterstoragegatewayoptionECMAScript 2015tc39ReactiveXownhotfseventsdeleteinferencegdprmobilejavascriptfetchuuidtddsinatraECMAScript 2019globentriesStreamsmixinschaiinstallerlimitassertes-abstractprefixcharacterTypeBoxhttpsbrowserlistwritablesimpledbfunctionlrucurlimportexportlessparentrm -frgetOwnPropertyDescriptorbyteOffsetbeanstalkpicomatchStyleSheetArray.prototype.flattenfastfastcopyes2016cloudfrontauthenticationbusycss-in-jswidthnumber-0fullbddfolderassignjapanesejsonpathpackage.jsonES2015file systemlistenersmruES7operating-systemiesignalpromiseprocessdom-testing-librarymime-dbextend[[Prototype]]appfpsargvrangeerrorpreserve-symlinksintrinsicdataviewES2022testingjsdomconfighas-ownvisualfindcolourWebSocketscommand-linettyexpressWebSocketperformantsequencekarmahooksserializationisConcatSpreadableES5flagseslint-pluginrecursivebluebirdzeroawaitvariables in cssdirtoStringTagObject.definePropertyiteratorcss nestingjsdiffes-shim APImulti-packagewafstyleshas
1.0.0

1 year ago