UNPKG

dcl-npc-toolkit-ai-version

Version:

A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations. AI usage is added atop of it

83 lines 13.1 kB
import * as utils from '@dcl-sdk/utils'; import { XMLHttpRequest } from './xmlhttprequest'; import { TextEncoder } from 'text-encoding'; import 'core-js/features/url'; import { timers } from '@dcl-sdk/utils'; Object.assign(globalThis, { FormData: class FormData { }, clearTimeout: timers.clearTimeout, setTimeout: timers.setTimeout }); globalThis.TextEncoder = TextEncoder; function clearTimeout(timer) { if (timer !== undefined) { utils.timers.clearTimeout(timer); } } function setTimeout(fn, time) { return utils.timers.setTimeout(fn, time); } class FormData { } class InvalidCharacterError extends Error { } var error = function (message) { throw new InvalidCharacterError(message); }; var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var REGEX_SPACE_CHARACTERS = /<%= spaceCharacters %>/g; const btoaEncode = function (input) { input = String(input); if (/[^\0-\xFF]/.test(input)) { error('The string to be encoded contains characters outside of the ' + 'Latin1 range.'); } var padding = input.length % 3; var output = ''; var position = -1; var a; var b; var c; var buffer; var length = input.length - padding; while (++position < length) { a = input.charCodeAt(position) << 16; b = input.charCodeAt(++position) << 8; c = input.charCodeAt(++position); buffer = a + b + c; output += (TABLE.charAt(buffer >> 18 & 0x3F) + TABLE.charAt(buffer >> 12 & 0x3F) + TABLE.charAt(buffer >> 6 & 0x3F) + TABLE.charAt(buffer & 0x3F)); } if (padding == 2) { a = input.charCodeAt(position) << 8; b = input.charCodeAt(++position); buffer = a + b; output += (TABLE.charAt(buffer >> 10) + TABLE.charAt((buffer >> 4) & 0x3F) + TABLE.charAt((buffer << 2) & 0x3F) + '='); } else if (padding == 1) { buffer = input.charCodeAt(position); output += (TABLE.charAt(buffer >> 2) + TABLE.charAt((buffer << 4) & 0x3F) + '=='); } return output; }; export const base64 = { 'encode': btoaEncode, }; Object.assign(globalThis, { FormData: FormData, XMLHttpRequest: XMLHttpRequest, clearTimeout: clearTimeout, setTimeout: setTimeout, btoa: btoaEncode, }); if (console != null && !console.warn) console.warn = (...args) => console.log('WARNING', ...args); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcGF0aWJpbGl0eS9wb2x5ZmlsbC9kZWNsYXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUlqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ3pCLFFBQVEsRUFBRSxNQUFNLFFBQVE7S0FBRztJQUMzQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7SUFDakMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO0NBQzNCLENBQUMsQ0FBQTtBQTRCSCxVQUFnQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFHNUQsU0FBUyxZQUFZLENBQUMsS0FBMkM7SUFHN0QsSUFBRyxLQUFLLEtBQUssU0FBUyxFQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBWSxDQUFDLENBQUE7SUFDM0MsQ0FBQztBQUNMLENBQUM7QUFDRCxTQUFTLFVBQVUsQ0FBQyxFQUFXLEVBQUMsSUFBVztJQUd2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUUsQ0FBQTtBQUM5QyxDQUFDO0FBQ0QsTUFBTSxRQUFRO0NBQUU7QUFXWixNQUFNLHFCQUFzQixTQUFRLEtBQUs7Q0FBRTtBQUUzQyxJQUFJLEtBQUssR0FBRyxVQUFTLE9BQVc7SUFHNUIsTUFBTSxJQUFJLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLElB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QVEsRUFBRSxRQUFRO0lBQ2xCLGNBQWMsRUFBRSxjQUFjO0lBQzlCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFVBQVUsRUFBRSxVQUFVO0lBQ3RCLElBQUksRUFBRSxVQUFVO0NBQ25CLENBQUMsQ0FBQTtBQUVGLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxDQUFFLE9BQWUsQ0FBQyxJQUFJO0lBQUcsT0FBZSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBYTUxIdHRwUmVxdWVzdCB9IGZyb20gJy4veG1saHR0cHJlcXVlc3QnXG4vL2NvbnNvbGUubG9nKFwiREVDTEFSSU5HISEhXCIpXG5cbnR5cGUgVGltZW91dD17fVxuaW1wb3J0IHsgVGV4dEVuY29kZXIgfSBmcm9tICd0ZXh0LWVuY29kaW5nJztcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy91cmwnXG5pbXBvcnQgeyB0aW1lcnMgfSBmcm9tICdAZGNsLXNkay91dGlscydcblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7XG5cdEZvcm1EYXRhOiBjbGFzcyBGb3JtRGF0YSB7fSxcblx0Y2xlYXJUaW1lb3V0OiB0aW1lcnMuY2xlYXJUaW1lb3V0LFxuXHRzZXRUaW1lb3V0OiB0aW1lcnMuc2V0VGltZW91dFxuICB9KVxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgR2xvYmFsIHtcbiAgICBUZXh0RW5jb2RlcjogdHlwZW9mIFRleHRFbmNvZGVyO1xuICB9XG4gIGludGVyZmFjZSBIZWFkZXJzIHtcblx0YXBwZW5kKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cdGRlbGV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkO1xuXHRnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbDtcblx0aGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG5cdHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXHQvLyBBZGQgYW55IG90aGVyIG1ldGhvZHMgeW91IHVzZSBmcm9tIHRoZSBIZWFkZXJzIGludGVyZmFjZVxuXHQvLyBUaGlzIGlzIGEgbWluaW1hbCBleGFtcGxlOyBhZGp1c3QgYWNjb3JkaW5nIHRvIHlvdXIgbmVlZHNcbiAgfVxuICBjbGFzcyBVUkwge1xuXHRjb25zdHJ1Y3RvcihpbnB1dDogc3RyaW5nLCBiYXNlPzogc3RyaW5nIHwgVVJMKTtcblx0Ly8gQWRkIGFueSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHlvdSBuZWVkIGZyb20gdGhlIFVSTCBjbGFzc1xuXHRocmVmOiBzdHJpbmc7XG5cdC8vIEV4YW1wbGUgcHJvcGVydGllc1xuXHRwcm90b2NvbDogc3RyaW5nO1xuXHRob3N0bmFtZTogc3RyaW5nO1xuXHRwYXRobmFtZTogc3RyaW5nO1xuXHRzZWFyY2g6IHN0cmluZztcblx0aGFzaDogc3RyaW5nO1xuXHQvLyBldGMuXG4gIH1cbn1cblxuKGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWwpLlRleHRFbmNvZGVyID0gVGV4dEVuY29kZXI7XG5cblxuZnVuY3Rpb24gY2xlYXJUaW1lb3V0KHRpbWVyOnN0cmluZyB8IG51bWJlciB8IFRpbWVvdXQgfCB1bmRlZmluZWQpe1xuICAgIC8vY29uc29sZS5sb2coXCJERUNMQVJJTkdcIixcImNsZWFyVGltZW91dCBjYWxsZWQhISFcIix0aW1lcilcbiAgICAvL3NpbXVsYXRlXG4gICAgaWYodGltZXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHV0aWxzLnRpbWVycy5jbGVhclRpbWVvdXQodGltZXIgYXMgYW55KVxuICAgIH1cbn1cbmZ1bmN0aW9uIHNldFRpbWVvdXQoZm46KCk9PnZvaWQsdGltZTpudW1iZXIpe1xuICAgIC8vY29uc29sZS5sb2coXCJERUNMQVJJTkdcIixcInNldFRpbWVvdXQgY2FsbGVkISEhXCIsZm4sdGltZSlcbiAgICAvL3NpbXVsYXRlXG4gICAgcmV0dXJuIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCBmbiwgdGltZSApXG59XG5jbGFzcyBGb3JtRGF0YXt9IFxuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL2Jhc2U2NC9ibG9iL21hc3Rlci9zcmMvYmFzZTY0LmpzXG4vL3N0YXJ0IGJhc2U2NCBlbmNvZGVcbiAgICAvKnZhciBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgPSBmdW5jdGlvbihtZXNzYWdlOmFueSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH07XG4gICAgXG4gICAgSW52YWxpZENoYXJhY3RlckVycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcjtcbiAgICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnSW52YWxpZENoYXJhY3RlckVycm9yJztcbiAgICAqL1xuICAgIGNsYXNzIEludmFsaWRDaGFyYWN0ZXJFcnJvciBleHRlbmRzIEVycm9ye31cblxuICAgIHZhciBlcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2U6YW55KSB7XG4gICAgICAgIC8vIE5vdGU6IHRoZSBlcnJvciBtZXNzYWdlcyB1c2VkIHRocm91Z2hvdXQgdGhpcyBmaWxlIG1hdGNoIHRob3NlIHVzZWQgYnlcbiAgICAgICAgLy8gdGhlIG5hdGl2ZSBgYXRvYmAvYGJ0b2FgIGltcGxlbWVudGF0aW9uIGluIENocm9taXVtLlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENoYXJhY3RlckVycm9yKG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICB2YXIgVEFCTEUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG4gICAgLy8gaHR0cDovL3doYXR3Zy5vcmcvaHRtbC9jb21tb24tbWljcm9zeW50YXhlcy5odG1sI3NwYWNlLWNoYXJhY3RlclxuICAgIHZhciBSRUdFWF9TUEFDRV9DSEFSQUNURVJTID0gLzwlPSBzcGFjZUNoYXJhY3RlcnMgJT4vZztcbiAgICAvLyBgZW5jb2RlYCBpcyBkZXNpZ25lZCB0byBiZSBmdWxseSBjb21wYXRpYmxlIHdpdGggYGJ0b2FgIGFzIGRlc2NyaWJlZCBpbiB0aGVcblx0Ly8gSFRNTCBTdGFuZGFyZDogaHR0cDovL3doYXR3Zy5vcmcvaHRtbC93ZWJhcHBhcGlzLmh0bWwjZG9tLXdpbmRvd2Jhc2U2NC1idG9hXG5cdGNvbnN0IGJ0b2FFbmNvZGUgPSBmdW5jdGlvbihpbnB1dDpzdHJpbmcpIHtcblx0XHRpbnB1dCA9IFN0cmluZyhpbnB1dCk7XG5cdFx0aWYgKC9bXlxcMC1cXHhGRl0vLnRlc3QoaW5wdXQpKSB7XG5cdFx0XHQvLyBOb3RlOiBubyBuZWVkIHRvIHNwZWNpYWwtY2FzZSBhc3RyYWwgc3ltYm9scyBoZXJlLCBhcyBzdXJyb2dhdGVzIGFyZVxuXHRcdFx0Ly8gbWF0Y2hlZCwgYW5kIHRoZSBpbnB1dCBpcyBzdXBwb3NlZCB0byBvbmx5IGNvbnRhaW4gQVNDSUkgYW55d2F5LlxuXHRcdFx0ZXJyb3IoXG5cdFx0XHRcdCdUaGUgc3RyaW5nIHRvIGJlIGVuY29kZWQgY29udGFpbnMgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoZSAnICtcblx0XHRcdFx0J0xhdGluMSByYW5nZS4nXG5cdFx0XHQpO1xuXHRcdH1cblx0XHR2YXIgcGFkZGluZyA9IGlucHV0Lmxlbmd0aCAlIDM7XG5cdFx0dmFyIG91dHB1dCA9ICcnO1xuXHRcdHZhciBwb3NpdGlvbiA9IC0xO1xuXHRcdHZhciBhO1xuXHRcdHZhciBiO1xuXHRcdHZhciBjO1xuXHRcdHZhciBidWZmZXI7XG5cdFx0Ly8gTWFrZSBzdXJlIGFueSBwYWRkaW5nIGlzIGhhbmRsZWQgb3V0c2lkZSBvZiB0aGUgbG9vcC5cblx0XHR2YXIgbGVuZ3RoID0gaW5wdXQubGVuZ3RoIC0gcGFkZGluZztcblxuXHRcdHdoaWxlICgrK3Bvc2l0aW9uIDwgbGVuZ3RoKSB7XG5cdFx0XHQvLyBSZWFkIHRocmVlIGJ5dGVzLCBpLmUuIDI0IGJpdHMuXG5cdFx0XHRhID0gaW5wdXQuY2hhckNvZGVBdChwb3NpdGlvbikgPDwgMTY7XG5cdFx0XHRiID0gaW5wdXQuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKSA8PCA4O1xuXHRcdFx0YyA9IGlucHV0LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG5cdFx0XHRidWZmZXIgPSBhICsgYiArIGM7XG5cdFx0XHQvLyBUdXJuIHRoZSAyNCBiaXRzIGludG8gZm91ciBjaHVua3Mgb2YgNiBiaXRzIGVhY2gsIGFuZCBhcHBlbmQgdGhlXG5cdFx0XHQvLyBtYXRjaGluZyBjaGFyYWN0ZXIgZm9yIGVhY2ggb2YgdGhlbSB0byB0aGUgb3V0cHV0LlxuXHRcdFx0b3V0cHV0ICs9IChcblx0XHRcdFx0VEFCTEUuY2hhckF0KGJ1ZmZlciA+PiAxOCAmIDB4M0YpICtcblx0XHRcdFx0VEFCTEUuY2hhckF0KGJ1ZmZlciA+PiAxMiAmIDB4M0YpICtcblx0XHRcdFx0VEFCTEUuY2hhckF0KGJ1ZmZlciA+PiA2ICYgMHgzRikgK1xuXHRcdFx0XHRUQUJMRS5jaGFyQXQoYnVmZmVyICYgMHgzRilcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhZGRpbmcgPT0gMikge1xuXHRcdFx0YSA9IGlucHV0LmNoYXJDb2RlQXQocG9zaXRpb24pIDw8IDg7XG5cdFx0XHRiID0gaW5wdXQuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKTtcblx0XHRcdGJ1ZmZlciA9IGEgKyBiO1xuXHRcdFx0b3V0cHV0ICs9IChcblx0XHRcdFx0VEFCTEUuY2hhckF0KGJ1ZmZlciA+PiAxMCkgK1xuXHRcdFx0XHRUQUJMRS5jaGFyQXQoKGJ1ZmZlciA+PiA0KSAmIDB4M0YpICtcblx0XHRcdFx0VEFCTEUuY2hhckF0KChidWZmZXIgPDwgMikgJiAweDNGKSArXG5cdFx0XHRcdCc9J1xuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKHBhZGRpbmcgPT0gMSkge1xuXHRcdFx0YnVmZmVyID0gaW5wdXQuY2hhckNvZGVBdChwb3NpdGlvbik7XG5cdFx0XHRvdXRwdXQgKz0gKFxuXHRcdFx0XHRUQUJMRS5jaGFyQXQoYnVmZmVyID4+IDIpICtcblx0XHRcdFx0VEFCTEUuY2hhckF0KChidWZmZXIgPDwgNCkgJiAweDNGKSArXG5cdFx0XHRcdCc9PSdcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fTtcbiAgICBleHBvcnQgY29uc3QgYmFzZTY0ID0ge1xuXHRcdCdlbmNvZGUnOiBidG9hRW5jb2RlLFxuXHRcdC8vJ2RlY29kZSc6IGRlY29kZSxcblx0XHQvLyd2ZXJzaW9uJzogJzwlPSB2ZXJzaW9uICU+J1xuXHR9O1xuLy9lbmQgYmFzZTY0IGVuY29kZVxuXG4vKipcbiAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIHNvbHZlIGEgcnVudGltZSBpc3N1ZXNcbiAqIFxuICovXG5PYmplY3QuYXNzaWduKGdsb2JhbFRoaXMsIHtcbiAgICBGb3JtRGF0YTogRm9ybURhdGEsXG4gICAgWE1MSHR0cFJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LFxuICAgIGNsZWFyVGltZW91dDogY2xlYXJUaW1lb3V0LFxuICAgIHNldFRpbWVvdXQ6IHNldFRpbWVvdXQsXG4gICAgYnRvYTogYnRvYUVuY29kZSxcbn0pXG5cbmlmIChjb25zb2xlICE9IG51bGwgJiYgIShjb25zb2xlIGFzIGFueSkud2FybikgKGNvbnNvbGUgYXMgYW55KS53YXJuID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZygnV0FSTklORycsIC4uLmFyZ3MpIl19