منصوبے کے بارے میں

qs ایک وسیع پیمانے پر استعمال ہونے والی JavaScript لائبریری ہے جو کوئری اسٹرنگز کو پارس کرنے اور سیریلائز کرنے کے لیے استعمال ہوتی ہے، جس میں نیسٹڈ آبجیکٹس، arrays، اور مختلف فارمیٹنگ آپشنز کے لیے سپورٹ شامل ہے۔ اسے اصل میں TJ Holowaychuk نے بنایا تھا اور اب Jordan Harband اسے برقرار رکھتے ہیں۔ یہ ویب ایپلیکیشنز اور APIs میں عام طور پر پائے جانے والے URL کوئری پیرامیٹرز کی مضبوط ہینڈلنگ فراہم کرتی ہے۔ لائبریری کی بنیادی فعالیت دو اہم کاموں پر مرکوز ہے: کوئری اسٹرنگز کو JavaScript آبجیکٹس میں پارس کرنا اور آبجیکٹس کو واپس کوئری اسٹرنگز میں سٹرنگیفائی کرنا۔ پارسنگ بریکٹ نوٹیشن کا استعمال کرتے ہوئے نیسٹڈ آبجیکٹ ڈھانچے کو سپورٹ کرتی ہے (مثال کے طور پر، 'foo[bar]=baz' بن جاتا ہے { foo: { bar: 'baz' } })، جس میں کنفیگریبل ڈیپتھ لمٹس (ڈیفالٹ 5 لیولز) شامل ہیں تاکہ گہرے نیسٹڈ ان پٹ سے بدسلوکی کو روکا جا سکے۔ Arrays کو بریکٹ نوٹیشن ('a[]=b&a[]=c') یا انڈیکسڈ نوٹیشن ('a[0]=b&a[1]=c') کا استعمال کرتے ہوئے پارس کیا جا سکتا ہے، جس میں sparse arrays کی خودکار کمپیکشن اور کنفیگریبل array لمٹس (ڈیفالٹ 20 عناصر) شامل ہیں۔ qs میں سیکیورٹی فیچرز نمایاں طور پر شامل کیے گئے ہیں۔ لائبریری ڈیپتھ لمٹس، پیرامیٹر لمٹس (ڈیفالٹ 1000)، اور array لمٹس نافذ کرتی ہے تاکہ ناقابلِ اعتماد ان پٹ کو پارس کرتے وقت ممکنہ بدسلوکی کو کم کیا جا سکے۔ strictDepth آپشن ڈیپتھ لمٹس سے تجاوز کرنے پر errors پھینک سکتا ہے، اور throwOnLimitExceeded کسی بھی لمٹ کی خلاف ورزی کے لیے تفصیلی errors فراہم کرتا ہے۔ پروٹوٹائپ پولوشن سے تحفظ plainObjects آپشن (null-prototype آبجیکٹس بنانا) یا allowPrototypes (جسے احتیاط کے ساتھ استعمال کیا جانا چاہیے) کے ذریعے ہینڈل کیا جاتا ہے۔ لائبریری legacy انکوڈنگ منظرناموں کو ہینڈل کرنے کے لیے charsetSentinel کے ذریعے charset کا پتہ لگانے کی بھی سپورٹ کرتی ہے۔ کنفیگریشن آپشنز وسیع ہیں، جن میں delimiter حسب ضرورت (string یا regex)، dot notation سپورٹ (allowDots)، comma-separated array پارسنگ، duplicate key ہینڈلنگ کی حکمت عملی (combine, first, last)، اور مختلف انکوڈنگ/ڈی کوڈنگ حسب ضرورت شامل ہیں۔ stringify فنکشن متعدد array فارمیٹس (indices, brackets, repeat, comma)، حسب ضرورت encoders/decoders، date سیریلائزیشن، key sorting، اور filtering کو سپورٹ کرتا ہے۔ encodeValuesOnly، addQueryPrefix، اور allowEmptyArrays جیسے آپشنز آؤٹ پٹ فارمیٹنگ پر باریک کنٹرول فراہم کرتے ہیں۔ لائبریری Node.js ماحول میں استعمال کے لیے ڈیزائن کی گئی ہے اور عام طور پر ویب فریم ورکس جیسے Express میں درخواست کے کوئری پیرامیٹرز کو ہینڈل کرنے کے لیے ضم کی جاتی ہے۔ اس کی جامع خصوصیات، سیکیورٹی تحفظات، اور وسیع دستاویزات اسے پروڈکشن ایپلیکیشنز میں کوئری اسٹرنگ ہینڈلنگ کے لیے ایک قابلِ اعتماد انتخاب بناتی ہیں۔