<?xml version="1.0" encoding="ISO-8859-1"?>
<opml version="2.0">
	<head>
		<title>outlinerserver.js</title>
		<dateModified>Wed, 08 Mar 2023 18:01:48 GMT</dateModified>
		<expansionState></expansionState>
		<vertScrollState>1</vertScrollState>
		<windowTop>300</windowTop>
		<windowLeft>700</windowLeft>
		<windowBottom>900</windowBottom>
		<windowRight>1500</windowRight>
		</head>
	<body text="outlinerserver.js">
		<outline created="Mon, 03 Feb 2014 03:21:03 GMT" pgfnum="36831" text="var myVersion = &quot;0.5.2&quot;, myProductName = &quot;outlinerserver&quot;;   "></outline>
		<outline text=""></outline>
		<outline text="const fs = require (&quot;fs&quot;);"></outline>
		<outline text="const request = require (&quot;request&quot;);"></outline>
		<outline text="const utils = require (&quot;daveutils&quot;);"></outline>
		<outline isComment="true" text="const daveappserver = require (&quot;daveappserver&quot;); "></outline>
		<outline text="const daveappserver = require (&quot;./lib/daveappserver.js&quot;);  "></outline>
		<outline text=""></outline>
		<outline text="var config = {">
			<outline created="Sun, 05 Feb 2023 19:03:16 GMT" text="fnameUserDatabase: &quot;data/users.json&quot;,"></outline>
			<outline created="Sun, 12 Feb 2023 16:42:33 GMT" text="flDaytonaPing: false"></outline>
			<outline isComment="true" text="port: process.env.PORT || 1824,"></outline>
			<outline isComment="true" text="websocketPort: 1826,"></outline>
			<outline isComment="true" text="usersFolder: &quot;data/users/&quot;,"></outline>
			<outline isComment="true" text="fnamePrefs: &quot;prefs.json&quot;, //each user's prefs file"></outline>
			<outline isComment="true" text="fnameStats: &quot;data/stats.json&quot;"></outline>
			<outline text="};"></outline>
			</outline>
		<outline text="var stats = { ">
			<outline isComment="true" text="productName: myProductName,"></outline>
			<outline isComment="true" text="version: myVersion"></outline>
			<outline text="};"></outline>
			</outline>
		<outline created="Sun, 05 Feb 2023 17:41:52 GMT" text=""></outline>
		<outline created="Sun, 05 Feb 2023 17:41:52 GMT" text="//user database -- 2/5/23 by DW">
			<outline created="Sun, 05 Feb 2023 17:46:49 GMT" text="var flUserDatabaseChanged = false;"></outline>
			<outline created="Sun, 05 Feb 2023 17:44:12 GMT" text=""></outline>
			<outline created="Sun, 05 Feb 2023 17:43:02 GMT" text="var userDatabase = {">
				<outline created="Sun, 05 Feb 2023 17:43:23 GMT" text="theUsers: {">
					<outline created="Sun, 05 Feb 2023 17:43:28 GMT" text="}"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:43:22 GMT" text="}"></outline>
				</outline>
			<outline created="Sun, 05 Feb 2023 17:43:03 GMT" text=""></outline>
			<outline created="Sun, 05 Feb 2023 17:43:39 GMT" text="function getUserDatabase (callback) {">
				<outline created="Sun, 05 Feb 2023 17:44:19 GMT" text="fs.readFile (config.fnameUserDatabase, function (err, jsontext) {">
					<outline created="Sun, 05 Feb 2023 17:44:42 GMT" text="if (err) {">
						<outline created="Sun, 05 Feb 2023 17:51:57 GMT" text="callback (err);"></outline>
						<outline created="Sun, 05 Feb 2023 17:44:45 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 05 Feb 2023 17:44:45 GMT" text="else {">
						<outline created="Sun, 05 Feb 2023 17:44:54 GMT" text="try {">
							<outline created="Mon, 06 Feb 2023 15:20:51 GMT" text="var ct = 0;"></outline>
							<outline created="Sun, 05 Feb 2023 17:45:14 GMT" text="userDatabase = JSON.parse (jsontext);"></outline>
							<outline created="Mon, 06 Feb 2023 15:20:59 GMT" text="for (x in userDatabase.theUsers) {">
								<outline created="Mon, 06 Feb 2023 15:21:12 GMT" text="ct++"></outline>
								<outline created="Mon, 06 Feb 2023 15:21:14 GMT" text="}"></outline>
								</outline>
							<outline created="Sun, 05 Feb 2023 18:23:51 GMT" text="console.log (&quot;getUserDatabase: &quot; + ct + &quot; users.&quot;);"></outline>
							<outline created="Sun, 05 Feb 2023 17:51:57 GMT" text="callback (undefined);"></outline>
							<outline created="Sun, 05 Feb 2023 17:44:56 GMT" text="}"></outline>
							</outline>
						<outline created="Sun, 05 Feb 2023 17:44:57 GMT" text="catch (err) {">
							<outline created="Sun, 05 Feb 2023 17:51:57 GMT" text="callback (err);"></outline>
							<outline created="Sun, 05 Feb 2023 17:44:59 GMT" text="}"></outline>
							</outline>
						<outline created="Sun, 05 Feb 2023 17:44:47 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 05 Feb 2023 17:44:38 GMT" text="});"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:43:54 GMT" text="}"></outline>
				</outline>
			<outline created="Sun, 05 Feb 2023 17:46:26 GMT" text="function userDatabaseChanged () {">
				<outline created="Sun, 05 Feb 2023 17:46:33 GMT" text="flUserDatabaseChanged = true;"></outline>
				<outline created="Sun, 05 Feb 2023 17:46:44 GMT" text="}"></outline>
				</outline>
			<outline created="Sun, 05 Feb 2023 17:49:39 GMT" text=""></outline>
			<outline created="Sun, 05 Feb 2023 17:49:39 GMT" text="function isUserInDatabase (emailAddress, callback) {">
				<outline created="Wed, 08 Mar 2023 17:54:37 GMT" isComment="true" text="Changes">
					<outline created="Wed, 08 Mar 2023 17:54:41 GMT" text="3/8/23; 12:54:42 PM by DW">
						<outline created="Wed, 08 Mar 2023 17:54:42 GMT" text="Needed to be rewritten to iterate over the object, not index into it."></outline>
						</outline>
					</outline>
				<outline created="Wed, 08 Mar 2023 17:57:16 GMT" text="var flfound = false;"></outline>
				<outline created="Wed, 08 Mar 2023 17:59:54 GMT" text="emailAddress = utils.stringLower (emailAddress); //3/8/23 by DW"></outline>
				<outline created="Wed, 08 Mar 2023 17:56:01 GMT" text="for (var x in userDatabase.theUsers) {">
					<outline created="Wed, 08 Mar 2023 17:57:50 GMT" text="if (!flfound) {">
						<outline created="Wed, 08 Mar 2023 17:56:12 GMT" text="if (utils.stringLower (x) == emailAddress) {">
							<outline created="Sun, 05 Feb 2023 17:51:05 GMT" text="callback (true, userDatabase.theUsers [x]);"></outline>
							<outline created="Wed, 08 Mar 2023 17:57:09 GMT" text="flfound = true;"></outline>
							<outline created="Wed, 08 Mar 2023 17:56:26 GMT" text="}"></outline>
							</outline>
						<outline created="Wed, 08 Mar 2023 17:57:51 GMT" text="}"></outline>
						</outline>
					<outline created="Wed, 08 Mar 2023 17:56:06 GMT" text="}"></outline>
					</outline>
				<outline created="Wed, 08 Mar 2023 17:57:23 GMT" text="if (!flfound) {">
					<outline created="Sun, 05 Feb 2023 17:51:05 GMT" text="callback (false);"></outline>
					<outline created="Wed, 08 Mar 2023 17:57:27 GMT" text="}"></outline>
					</outline>
				<outline created="Wed, 08 Mar 2023 17:56:01 GMT" isComment="true" text=""></outline>
				<outline created="Sun, 05 Feb 2023 17:50:20 GMT" isComment="true" text="const theUser = userDatabase.theUsers [emailAddress];"></outline>
				<outline created="Sun, 05 Feb 2023 17:50:20 GMT" isComment="true" text="if (theUser === undefined) {">
					<outline created="Sun, 05 Feb 2023 17:51:05 GMT" text="callback (false);"></outline>
					<outline created="Sun, 05 Feb 2023 17:50:44 GMT" text="}"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:50:44 GMT" isComment="true" text="else {">
					<outline created="Wed, 08 Feb 2023 16:14:30 GMT" isComment="true" text="theUser.ctPageReads++;"></outline>
					<outline created="Wed, 08 Feb 2023 16:14:36 GMT" isComment="true" text="theUser.whenPageRead = new Date ();"></outline>
					<outline isComment="true" text="userDatabaseChanged ();"></outline>
					<outline created="Sun, 05 Feb 2023 17:51:05 GMT" text="callback (true, theUser);"></outline>
					<outline created="Sun, 05 Feb 2023 17:50:46 GMT" text="}"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:50:00 GMT" text="}"></outline>
				</outline>
			<outline created="Sun, 05 Feb 2023 17:42:08 GMT" text="function addEmailToUserInDatabase (screenname, emailAddress, magicString, flNewUser, callback) {">
				<outline created="Wed, 08 Mar 2023 17:59:54 GMT" text="emailAddress = utils.stringLower (emailAddress); //3/8/23 by DW"></outline>
				<outline created="Sun, 05 Feb 2023 17:54:00 GMT" text="isUserInDatabase (emailAddress, function (flInDatabase, theUser) {">
					<outline created="Sat, 07 Jan 2023 15:50:15 GMT" text="if (flNewUser) { ">
						<outline created="Sat, 07 Jan 2023 15:50:57 GMT" text="if (flInDatabase) {">
							<outline created="Sat, 07 Jan 2023 15:51:17 GMT" text="const message = &quot;Can't create the user \&quot;&quot; + screenname + &quot;\&quot; because there already is a user with that email address.&quot;"></outline>
							<outline created="Sat, 07 Jan 2023 15:51:05 GMT" text="callback ({message});"></outline>
							<outline created="Sat, 07 Jan 2023 15:51:00 GMT" text="}"></outline>
							</outline>
						<outline created="Sat, 07 Jan 2023 15:51:00 GMT" text="else {">
							<outline created="Sat, 07 Jan 2023 16:02:36 GMT" text="if (config.flEnableNewUsers) {">
								<outline created="Sat, 07 Jan 2023 15:58:57 GMT" text="const now = new Date (), emailSecret = utils.getRandomPassword (10);"></outline>
								<outline created="Sun, 05 Feb 2023 17:57:15 GMT" text="userDatabase.theUsers [emailAddress] = {">
									<outline created="Sat, 07 Jan 2023 15:57:28 GMT" text="emailAddress, "></outline>
									<outline created="Sun, 25 Dec 2022 15:22:24 GMT" text="emailSecret,"></outline>
									<outline text="whenCreated: now,"></outline>
									<outline text="whenUpdated: now"></outline>
									<outline created="Sat, 17 Sep 2022 13:03:09 GMT" isComment="true" text="ctPageReads: 1,"></outline>
									<outline created="Sat, 17 Sep 2022 13:03:32 GMT" isComment="true" text="whenPageRead: now"></outline>
									<outline created="Sun, 05 Feb 2023 17:57:38 GMT" text="};"></outline>
									</outline>
								<outline text="userDatabaseChanged ();"></outline>
								<outline created="Fri, 18 Mar 2022 15:46:28 GMT" text="callback (undefined, emailSecret);"></outline>
								<outline created="Sat, 07 Jan 2023 16:02:38 GMT" text="}"></outline>
								</outline>
							<outline created="Sat, 07 Jan 2023 16:02:59 GMT" text="else {">
								<outline created="Mon, 12 Dec 2022 14:25:08 GMT" text="const message = &quot;Can't create the user \&quot;&quot; + screenname + &quot;\&quot; because new users are not being accepted here at this time.&quot;;"></outline>
								<outline created="Fri, 18 Mar 2022 15:46:22 GMT" text="callback ({message});"></outline>
								<outline created="Sat, 07 Jan 2023 16:03:02 GMT" text="}"></outline>
								</outline>
							<outline created="Sat, 07 Jan 2023 15:51:02 GMT" text="}"></outline>
							</outline>
						<outline created="Sat, 07 Jan 2023 15:50:23 GMT" text="}"></outline>
						</outline>
					<outline created="Sat, 07 Jan 2023 15:50:24 GMT" text="else {">
						<outline created="Sat, 17 Sep 2022 13:08:27 GMT" text="if (flInDatabase) {">
							<outline created="Tue, 07 Feb 2023 15:13:22 GMT" text="callback (undefined, theUser.emailSecret);"></outline>
							<outline created="Sat, 17 Sep 2022 13:08:43 GMT" text="}"></outline>
							</outline>
						<outline created="Tue, 07 Feb 2023 15:12:26 GMT" text="else {">
							<outline created="Tue, 07 Feb 2023 15:12:36 GMT" text="const message = &quot;The user \&quot;&quot; + emailAddress + &quot;\&quot; doesn't have an account on this server.&quot;;"></outline>
							<outline created="Tue, 07 Feb 2023 15:13:07 GMT" text="callback ({message});"></outline>
							<outline created="Tue, 07 Feb 2023 15:12:31 GMT" text="}"></outline>
							</outline>
						<outline created="Sat, 07 Jan 2023 15:50:26 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 05 Feb 2023 17:54:20 GMT" text="});"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:42:13 GMT" text="}"></outline>
				</outline>
			<outline created="Sun, 05 Feb 2023 17:42:02 GMT" text=""></outline>
			</outline>
		<outline text=""></outline>
		<outline isComment="true" text="function statsChanged () { ">
			<outline text="daveappserver.saveStats (stats);"></outline>
			<outline text="}"></outline>
			</outline>
		<outline isComment="true" text="function getPrefs (screenname, callback) {">
			<outline isComment="true" text="Changes">
				<outline text="1/28/18; 1:58:14 PM by DW">
					<outline text="This is the initial call of the SYO client to the server. We return the information it needs to startup in one package. "></outline>
					</outline>
				</outline>
			<outline text="var myPrefs = {">
				<outline text="screenname: screenname"></outline>
				<outline text="};"></outline>
				</outline>
			<outline text="var folder = config.usersFolder + screenname + &quot;/&quot;;"></outline>
			<outline text="var prefsFile = folder + config.fnamePrefs;"></outline>
			<outline isComment="true" text="console.log (&quot;getPrefs: screenname == &quot; + screenname + &quot;, prefsFile == &quot; + prefsFile);"></outline>
			<outline text="utils.sureFilePath (prefsFile, function () {">
				<outline text="fs.readFile (prefsFile, function (err, data) {">
					<outline text="if (err) {">
						<outline text="myPrefs.prefs = new Object ();"></outline>
						<outline text="callback (undefined, myPrefs); //return an empty prefs struct"></outline>
						<outline text="}"></outline>
						</outline>
					<outline text="else {">
						<outline text="try {">
							<outline text="myPrefs.prefs = JSON.parse (data.toString ());"></outline>
							<outline text="callback (undefined, myPrefs);"></outline>
							<outline text="}"></outline>
							</outline>
						<outline text="catch (err) {">
							<outline text="console.log (&quot;getPrefs: err.message == &quot; + err.message);"></outline>
							<outline text="callback (err);"></outline>
							<outline text="}"></outline>
							</outline>
						<outline text="}"></outline>
						</outline>
					<outline text="});"></outline>
					</outline>
				<outline text="});"></outline>
				</outline>
			<outline text="}"></outline>
			</outline>
		<outline isComment="true" text="function savePrefs (screenname, jsontext, callback) {">
			<outline text="var prefsFile = config.usersFolder + screenname + &quot;/&quot; + config.fnamePrefs;"></outline>
			<outline isComment="true" text="console.log (&quot;savePrefs: screenname == &quot; + screenname + &quot;, jsontext == &quot; + jsontext);"></outline>
			<outline text="utils.sureFilePath (prefsFile, function () {">
				<outline text="fs.writeFile (prefsFile, jsontext, function (err) {">
					<outline text="callback (err, true);"></outline>
					<outline text="});"></outline>
					</outline>
				<outline text="});"></outline>
				</outline>
			<outline text="}"></outline>
			</outline>
		<outline text=""></outline>
		<outline text="function handleHttpRequest (theRequest) {">
			<outline text="var params = theRequest.params, now = new Date ();"></outline>
			<outline text="var token = (params.oauth_token !== undefined) ? params.oauth_token : undefined;"></outline>
			<outline text="var secret = (params.oauth_token_secret !== undefined) ? params.oauth_token_secret : undefined;"></outline>
			<outline text="function returnPlainText (s) {">
				<outline text="theRequest.httpReturn (200, &quot;text/plain&quot;, s.toString ());"></outline>
				<outline text="}"></outline>
				</outline>
			<outline text="function returnHtml (htmltext) {">
				<outline text="theRequest.httpReturn (200, &quot;text/html&quot;, htmltext.toString ());"></outline>
				<outline text="}"></outline>
				</outline>
			<outline text="function returnError (jstruct) {">
				<outline text="theRequest.httpReturn (500, &quot;application/json&quot;, utils.jsonStringify (jstruct));"></outline>
				<outline text="}"></outline>
				</outline>
			<outline text="function returnData (jstruct) {">
				<outline isComment="true" text="Changes">
					<outline text="12/24/20; 3:01:25 PM by DW">
						<outline text="Externally what we call listName is called username. "></outline>
						</outline>
					</outline>
				<outline text="if (jstruct === undefined) {">
					<outline text="jstruct = {};"></outline>
					<outline text="}"></outline>
					</outline>
				<outline text="else {">
					<outline text="if (jstruct.listName !== undefined) {">
						<outline text="jstruct.username = jstruct.listName;"></outline>
						<outline text="delete jstruct.listName;"></outline>
						<outline text="}"></outline>
						</outline>
					<outline text="}"></outline>
					</outline>
				<outline text="theRequest.httpReturn (200, &quot;application/json&quot;, utils.jsonStringify (jstruct));"></outline>
				<outline text="}"></outline>
				</outline>
			<outline text="function httpReturn (err, jstruct) {">
				<outline text="if (err) {">
					<outline text="returnError (err);"></outline>
					<outline text="}"></outline>
					</outline>
				<outline text="else {">
					<outline text="returnData (jstruct);"></outline>
					<outline text="}"></outline>
					</outline>
				<outline text="}"></outline>
				</outline>
			<outline text="switch (theRequest.lowerpath) {">
				<outline isComment="true" text="case &quot;/&quot;: //let the app shell handle it, not River6">
					<outline text="return (false);"></outline>
					</outline>
				<outline created="Sat, 08 Feb 2014 16:43:58 GMT" pgfnum="37236" text="case &quot;/now&quot;: ">
					<outline text="returnPlainText (now);"></outline>
					<outline created="Wed, 22 Jan 2014 15:18:30 GMT" pgfnum="36266" text="return (true); "></outline>
					</outline>
				<outline isComment="true" text="case &quot;/stats&quot;: case &quot;/stats.json&quot;:">
					<outline text="returnData (river6.getStats ());"></outline>
					<outline created="Wed, 22 Jan 2014 15:18:30 GMT" pgfnum="36266" text="return (true);"></outline>
					</outline>
				<outline text="default: ">
					<outline text="return (false); //not handled"></outline>
					</outline>
				<outline text="}"></outline>
				</outline>
			<outline text="}"></outline>
			</outline>
		<outline text=""></outline>
		<outline text="function httpRequest (url, timeout, headers, callback) {">
			<outline text="request (url, function (err, response, data) {">
				<outline created="Sun, 08 Aug 2021 15:33:13 GMT" text="if (err) {">
					<outline created="Sun, 08 Aug 2021 15:33:17 GMT" text="callback (err);"></outline>
					<outline created="Sun, 08 Aug 2021 15:33:20 GMT" text="}"></outline>
					</outline>
				<outline created="Sun, 08 Aug 2021 15:33:21 GMT" text="else {">
					<outline created="Sun, 08 Aug 2021 15:33:23 GMT" text="if (response.statusCode != 200) {">
						<outline created="Sun, 08 Aug 2021 15:34:06 GMT" text="const message = &quot;The request returned a status code of &quot; + response.statusCode + &quot;.&quot;;"></outline>
						<outline created="Sun, 08 Aug 2021 15:34:43 GMT" text="callback ({message});"></outline>
						<outline created="Sun, 08 Aug 2021 15:33:28 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 08 Aug 2021 15:33:29 GMT" text="else {">
						<outline text="callback (undefined, data) "></outline>
						<outline created="Sun, 08 Aug 2021 15:33:31 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 08 Aug 2021 15:33:33 GMT" text="}"></outline>
					</outline>
				<outline text="});"></outline>
				</outline>
			<outline text="}"></outline>
			</outline>
		<outline text="function publicFileSaved (token, secret, urlOutline) { //12/4/21 by DW">
			<outline created="Sun, 12 Feb 2023 16:41:54 GMT" isComment="true" text="Changes">
				<outline created="Sun, 12 Feb 2023 16:41:56 GMT" text="2/12/23; 11:41:57 AM by DW">
					<outline created="Sun, 12 Feb 2023 16:41:57 GMT" text="I had to turn this off because daytona hasn't been converted to the new identity system. "></outline>
					</outline>
				</outline>
			<outline created="Sun, 12 Feb 2023 16:42:51 GMT" text="if (config.flDaytonaPing) { //2/12/23 by DW">
				<outline created="Sat, 04 Dec 2021 21:45:36 GMT" text="const url = &quot;http://daytona.scripting.com/ping?url=&quot; + urlOutline + &quot;&amp;oauth_token=&quot; + token + &quot;&amp;oauth_token_secret=&quot; + secret + &quot;&amp;collection=drummeruser&quot;;"></outline>
				<outline created="Thu, 17 Jun 2021 19:56:51 GMT" text="httpRequest (url, undefined, undefined, function (err, responsetext) {">
					<outline created="Sun, 08 Aug 2021 15:12:18 GMT" text="if (err) {">
						<outline created="Sun, 08 Aug 2021 15:14:05 GMT" text="console.log (&quot;publicFileSaved: err.message == &quot; + err.message);"></outline>
						<outline created="Sun, 08 Aug 2021 15:14:10 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 08 Aug 2021 15:12:29 GMT" text="else {">
						<outline created="Sat, 04 Dec 2021 18:57:04 GMT" text="console.log (&quot;publicFileSaved: url == &quot; + url + &quot;, responsetext == &quot; + responsetext);"></outline>
						<outline created="Sun, 08 Aug 2021 15:12:31 GMT" text="}"></outline>
						</outline>
					<outline created="Thu, 17 Jun 2021 19:58:33 GMT" text="})"></outline>
					</outline>
				<outline created="Sun, 12 Feb 2023 16:42:56 GMT" text="}"></outline>
				</outline>
			<outline created="Sat, 04 Dec 2021 18:56:53 GMT" text="}"></outline>
			</outline>
		<outline text="function everyMinute () {">
			<outline text="}"></outline>
			</outline>
		<outline text="function everySecond () {">
			<outline created="Sun, 05 Feb 2023 17:47:09 GMT" text="if (flUserDatabaseChanged) {">
				<outline text="flUserDatabaseChanged = false;"></outline>
				<outline created="Sun, 05 Feb 2023 17:47:13 GMT" text="fs.writeFile (config.fnameUserDatabase, utils.jsonStringify (userDatabase), function (err) {">
					<outline created="Sun, 05 Feb 2023 17:44:42 GMT" text="if (err) {">
						<outline created="Sun, 05 Feb 2023 17:45:44 GMT" text="console.log (&quot;everySecond: err.message = &quot; + err.message);"></outline>
						<outline created="Sun, 05 Feb 2023 17:44:45 GMT" text="}"></outline>
						</outline>
					<outline created="Sun, 05 Feb 2023 17:48:10 GMT" text="});"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:47:11 GMT" text="}"></outline>
				</outline>
			<outline text="}"></outline>
			</outline>
		<outline text="getUserDatabase (function (err) {">
			<outline created="Sun, 05 Feb 2023 17:52:43 GMT" text="if (err) {">
				<outline created="Sun, 05 Feb 2023 17:45:44 GMT" text="console.log (&quot;getUserDatabase: err.message = &quot; + err.message);"></outline>
				<outline created="Sun, 05 Feb 2023 17:52:46 GMT" text="}"></outline>
				</outline>
			<outline text="var appOptions = {">
				<outline text="productName: myProductName, "></outline>
				<outline isComment="true" text="productNameForDisplay: &quot;My Outliner&quot;,"></outline>
				<outline text="version: myVersion,"></outline>
				<outline isComment="true" text="urlServerHomePageSource: &quot;http://scripting.com/code/outlinerserver/home/index.html&quot;,"></outline>
				<outline isComment="true" text="flWebsocketEnabled: false,"></outline>
				<outline text="everySecond,"></outline>
				<outline text="everyMinute,"></outline>
				<outline text="handleHttpRequest,"></outline>
				<outline created="Sat, 04 Dec 2021 18:56:11 GMT" text="publicFileSaved, //12/4/21 by DW"></outline>
				<outline text="addMacroToPagetable: function (pagetable) {">
					<outline text="pagetable.slogan = utils.getRandomSnarkySlogan ();"></outline>
					<outline text="},"></outline>
					</outline>
				<outline created="Sun, 05 Feb 2023 17:41:25 GMT" text="addEmailToUserInDatabase, //2/5/23 by DW"></outline>
				<outline created="Mon, 06 Feb 2023 15:16:34 GMT" text="isUserInDatabase //2/6/23 by DW"></outline>
				<outline text="}"></outline>
				</outline>
			<outline text="daveappserver.start (appOptions, function (appConfig) {">
				<outline created="Mon, 29 Nov 2021 15:51:41 GMT" text="for (var x in appConfig) {">
					<outline created="Mon, 29 Nov 2021 15:51:48 GMT" text="config [x] = appConfig [x];"></outline>
					<outline created="Mon, 29 Nov 2021 15:51:53 GMT" text="}"></outline>
					</outline>
				<outline text="});"></outline>
				</outline>
			<outline created="Mon, 06 Feb 2023 15:23:25 GMT" text="});"></outline>
			</outline>
		</body>
	</opml>
