Skip to content

Commit b9eb3dc

Browse files
thehabescubapmepriprigit-vooCopilot
authored
Development to Main Diff (#431)
* _sub is no longer missing on invitees * add temp sub to new user * Update cd_dev.yaml * Update cd_dev.yaml * stop if things are missing * adding verify on main * Removing fileSystem from Github API (#214) * Removing fileSystem from Github API * Update ProjectFactory.mjs --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * 220 services for bug reporting and feedback (#221) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * cicd (#222) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * 220 services for bug reporting and feedback (#224) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * explicitly adding CORS * API call to Update Profile (#223) * API call to Update Profile * existingEmail and existingName * Changes to comments * Update User.mjs * Save AnnotationCollection, Pages and Annotations to RERUM (#215) * saveCollection to RERUM * Adding Tinypen to Create RERUM Object * Update exists.test.mjs * Update exists.test.mjs * Update Page.mjs * Update cd_dev.yaml * stop if things are missing * adding verify on main * starting some adjustments * better the tests * headed home * multiple ways to extract the data * retest with suggestions * layer/page halos * percolating deletes * setting up routes --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Import TPEN28 (#226) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Test restoration (#229) * Update cd_dev.yaml * stop if things are missing * adding verify on main * cleanup missing properties, changed method names * just this route * id shouldn't be optional here. out of date test files dropped * This should never break. What's up? * bad merge * Update exists_unit.test.mjs * test is ugly The page router needs a projectId as well to actually work * Update end_to_end_unit.test.mjs These two cannot work without a corresponding project, so it will need to be rewritten * nested in router now * Update exists.test.mjs * un-mjs * Refactor all .mjs files to .js and update imports. Closes #194 (#228) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Refactor all .mjs files to .js and update imports. Closes #194 * un-mjs * npm update * Hey I heard you like tests, so I put tests in your tests * mjs > js * no mjs, bad mjs * fine * habesroxx * how bout now * hide, Jest is coming * runner love * Update package-lock.json * jest no like to run * null != undefined * default not defaulting * fixes "id is not defined" shoulda wrote test for this * out of scope, out of effs --------- Co-authored-by: Priyal Patel <mepripri0712@gmail.com> * Update package-lock.json * Using UID to get User Projects * Update index.mjs * no label is fine for Pages * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js * Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js * Update validateURL.js * Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * 231 create overwrite layer (#239) * passing through the projectID * some tests * support page * path in Page class generator * no label is fine for Pages * updating layers * AI generated tests * Update API.md * oh auth. * how'd we miss this? * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * just skip to move on * Update Layer.js * Update index.js * merged mess unwrap * dummy * Update Project.js * handle labels throughout * unerring * update layer organized * return changes * avoid hard crash * prevent crash on a page 404 * full id After I PUT a new label (this was successful) the "id" on the layer the db obj does not the the prefix and is just the hash. * you get it * vaildate all singular changes * greedier try-catch * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js commit f97723414967e86eccda10f29ab02c4d89e7a7e9 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:14:16 2025 -0500 Update index.js commit dde7c3015f32cb38d6c49cf25ac826a347310c26 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:05:02 2025 -0500 SetHeader Origin commit d2ec19844b8a15fe4497eb877d6709f898487324 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 12:47:32 2025 -0500 Origin Fetch commit 83fac3a3cf8bea72c5941b3e1cba7f95fe130d65 Merge: 6e79a8d 2e5bbbd Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 09:31:12 2025 -0500 Merge branch 'development' into import-tpen28 commit 2e5bbbd0dd8d7690d9c7f6c33394fbac28d813dc Merge: 443d0a2 9f102fb Author: Patrick Cuba <cubap@slu.edu> Date: Wed Apr 30 22:38:43 2025 -0500 Merge branch 'development' of https://github.com/CenterForDigitalHumanities/TPEN-services into development commit 443d0a2d76c8eb5226fc9b7773b695c13d690943 Author: cubap <cubap@slu.edu> Date: Wed Apr 30 15:23:02 2025 -0500 no label is fine for Pages commit 6e79a8d24aa70c8844859c5c70c1eb1766303d9d Merge: ac0182f 9f102fb Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 12:06:38 2025 -0500 Merge branch 'development' into import-tpen28 commit ac0182f62ae4ea53a32f4fb3d70baac41dc101ce Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 11:51:40 2025 -0500 Update index.mjs commit 673a5c5c7f8b729c845e05eacbfade3e8f354906 Author: Priyal Patel <mepripri0712@gmail.com> Date: Tue Apr 29 17:22:08 2025 -0500 Using UID to get User Projects commit afe664e776954a4689ae174ee7a40f69c5c5d7a6 Author: Priyal Patel <mepripri0712@gmail.com> Date: Mon Apr 28 10:16:27 2025 -0500 Update index.mjs commit 6bf9c9a704df759f553a8f7fff86556108c4c0c2 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:56:11 2025 -0500 Update index.mjs commit 0906084f2ebeaa966caf86999c3c2bc85300a314 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:50:54 2025 -0500 Update index.mjs commit 5dd077e02ca0a4fddf9df52e959a519e7368769d Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:33:53 2025 -0500 Update index.mjs commit e9971bc0bc892a9391f4918bffb45e65fddae550 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 12:18:30 2025 -0500 Update index.mjs * 422 if no pages are there. * Update index.js * Update index.js * API entries * typo --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * remove unused file * 235 save annotations (#240) * passing through the projectID * some tests * support page * path in Page class generator * no label is fine for Pages * updating layers * AI generated tests * Update API.md * oh auth. * how'd we miss this? * Create lineRouter with new paths remove line library and add methods to class * getLine * really loading lines * line modification * test barf * aw thucks! * Hi, I'm new here. * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * just skip to move on * Update Layer.js * Update index.js * merged mess unwrap * dummy * Update Project.js * handle labels throughout * unerring * update layer organized * return changes * avoid hard crash * prevent crash on a page 404 * full id After I PUT a new label (this was successful) the "id" on the layer the db obj does not the the prefix and is just the hash. * you get it * vaildate all singular changes * greedier try-catch * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js commit f97723414967e86eccda10f29ab02c4d89e7a7e9 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:14:16 2025 -0500 Update index.js commit dde7c3015f32cb38d6c49cf25ac826a347310c26 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:05:02 2025 -0500 SetHeader Origin commit d2ec19844b8a15fe4497eb877d6709f898487324 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 12:47:32 2025 -0500 Origin Fetch commit 83fac3a3cf8bea72c5941b3e1cba7f95fe130d65 Merge: 6e79a8d 2e5bbbd Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 09:31:12 2025 -0500 Merge branch 'development' into import-tpen28 commit 2e5bbbd0dd8d7690d9c7f6c33394fbac28d813dc Merge: 443d0a2 9f102fb Author: Patrick Cuba <cubap@slu.edu> Date: Wed Apr 30 22:38:43 2025 -0500 Merge branch 'development' of https://github.com/CenterForDigitalHumanities/TPEN-services into development commit 443d0a2d76c8eb5226fc9b7773b695c13d690943 Author: cubap <cubap@slu.edu> Date: Wed Apr 30 15:23:02 2025 -0500 no label is fine for Pages commit 6e79a8d24aa70c8844859c5c70c1eb1766303d9d Merge: ac0182f 9f102fb Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 12:06:38 2025 -0500 Merge branch 'development' into import-tpen28 commit ac0182f62ae4ea53a32f4fb3d70baac41dc101ce Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 11:51:40 2025 -0500 Update index.mjs commit 673a5c5c7f8b729c845e05eacbfade3e8f354906 Author: Priyal Patel <mepripri0712@gmail.com> Date: Tue Apr 29 17:22:08 2025 -0500 Using UID to get User Projects commit afe664e776954a4689ae174ee7a40f69c5c5d7a6 Author: Priyal Patel <mepripri0712@gmail.com> Date: Mon Apr 28 10:16:27 2025 -0500 Update index.mjs commit 6bf9c9a704df759f553a8f7fff86556108c4c0c2 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:56:11 2025 -0500 Update index.mjs commit 0906084f2ebeaa966caf86999c3c2bc85300a314 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:50:54 2025 -0500 Update index.mjs commit 5dd077e02ca0a4fddf9df52e959a519e7368769d Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:33:53 2025 -0500 Update index.mjs commit e9971bc0bc892a9391f4918bffb45e65fddae550 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 12:18:30 2025 -0500 Update index.mjs * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js commit f97723414967e86eccda10f29ab02c4d89e7a7e9 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:14:16 2025 -0500 Update index.js commit dde7c3015f32cb38d6c49cf25ac826a347310c26 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:05:02 2025 -0500 SetHeader Origin commit d2ec19844b8a15fe4497eb877d6709f898487324 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 12:47:32 2025 -0500 Origin Fetch commit 83fac3a3cf8bea72c5941b3e1cba7f95fe130d65 Merge: 6e79a8d 2e5bbbd Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 09:31:12 2025 -0500 Merge branch 'development' into import-tpen28 commit 2e5bbbd0dd8d7690d9c7f6c33394fbac28d813dc Merge: 443d0a2 9f102fb Author: Patrick Cuba <cubap@slu.edu> Date: Wed Apr 30 22:38:43 2025 -0500 Merge branch 'development' of https://github.com/CenterForDigitalHumanities/TPEN-services into development commit 443d0a2d76c8eb5226fc9b7773b695c13d690943 Author: cubap <cubap@slu.edu> Date: Wed Apr 30 15:23:02 2025 -0500 no label is fine for Pages commit 6e79a8d24aa70c8844859c5c70c1eb1766303d9d Merge: ac0182f 9f102fb Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 12:06:38 2025 -0500 Merge branch 'development' into import-tpen28 commit ac0182f62ae4ea53a32f4fb3d70baac41dc101ce Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 11:51:40 2025 -0500 Update index.mjs commit 673a5c5c7f8b729c845e05eacbfade3e8f354906 Author: Priyal Patel <mepripri0712@gmail.com> Date: Tue Apr 29 17:22:08 2025 -0500 Using UID to get User Projects commit afe664e776954a4689ae174ee7a40f69c5c5d7a6 Author: Priyal Patel <mepripri0712@gmail.com> Date: Mon Apr 28 10:16:27 2025 -0500 Update index.mjs commit 6bf9c9a704df759f553a8f7fff86556108c4c0c2 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:56:11 2025 -0500 Update index.mjs commit 0906084f2ebeaa966caf86999c3c2bc85300a314 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:50:54 2025 -0500 Update index.mjs commit 5dd077e02ca0a4fddf9df52e959a519e7368769d Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:33:53 2025 -0500 Update index.mjs commit e9971bc0bc892a9391f4918bffb45e65fddae550 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 12:18:30 2025 -0500 Update index.mjs * 422 if no pages are there. * Update index.js * Update index.js * Update index.js * since I'm here... moved some functions into their own space * teehee * Make it so. * fixed GET /line/:id * page isn't a page? * undata * more details in data objects * Update Line.js * load it for updates * put overwrite in for updating pages * unlog * changing route format for compile trouble * no test * No. This is wrong and fills me with hate. * quick code comment * patches for PATCHes --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * 230 clean up project routers (#245) * Development (#234) * update metadata (#171) * update metadata * modify route name and db.update * update db.update dependent * cleanup --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * quickfix * cleanup * modify db.update to receive one param {data, collection} * nodiff * restore action(data, collection) structure * undiff * Changed Collections Parameter for Save() * Removing /:id put Call * Removing the Limit from express.json() * Removing the Limit from express.json() * getting started with Vault (#190) * getting started with Vault * newer Vault * tests * removing redundant code * proper tests passing * sample Vault * Bryan's refusal to .jsonld makes this not work as expected * loading resources This is incomplete by design. We need to ask Vault to add any resources we want resolved * expanding the Manifest a bit * touch up for merge * touch up for merge --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Current Project IIIF manifest Creation (#187) * Current Project IIIF manifest Creation * Refactored the exportManifest() and endpoint name * Changed the exportManifest() function * TPEN ID error handled * endpoint to move the manifest.json to TPEN-Static-Dev * Changed @id to id * Getting all Ids * Console Clean up * Added env variables * Adding Imports * Adding Imports * Deleting Ids * Updating Logic Added * User not a member cannot change the manifest * Removing project2 * Adding comments to functions * add hotkeys service (#184) * add hotkeys service * hotkey endpoints * aggregate hotkeys during project retrieval * specify hotkey fields to include * cleanup * Update Hotkeys.js * Update ProjectFactory.mjs * Return hotkeys as an Array of Strings * aligning with Class changes * remove create, since .save is not acting correctly * cleanup and drop .post * tests restored no Jest here, just checking exists. * tests and sinon upgrade * no db tests directly * Update exists_unit.test.mjs * putting post back in... * adding create back with safety * adding upsert to accomodate bad errors * Update Hotkeys.js * uncatch to let errors through * expect the errors to come back * switch to jest tests --------- Co-authored-by: cubap <cubap@slu.edu> * hotifx * hotfix for symbols. * delete enabled * Create API.md * collaborators and users * add markdown reader * package for markdown * Update API.md * Update API.md * touch * ah codes * proxy for internal use (#201) * Endpoint to save changes for the new layer (#199) * Adding endpoint to save changes from the layer * Adding New Layer * No Empty Label and no Annotations * Updated new Layer * Adding Items to partOf * Changing id convention * Removing updating layer * Annotation Change * Adding Delete Endpoint * not sure... This type of thing? * Label Change * Added Layer Class * Adding rerum ids to delete and add * Changing tests * Update exists.test.mjs * Changing LayerLabel * Changes AnnotationCollection Structure * Update Pages API * Updating partOf Ids in case of any change * Adding Layer Metadata Label Change * example results as a base for comments, delete these files before merge. * Adding AddLayer Commenting Rest of the APIs * Added DeleteLayer Back * Deleting json files * Updates to the comments * Making Project to Layer Changes * Renaming layerAnnotationCollection * Removing UpdateOne() changes * Removing UpdateOne() changes * Removing UpdateOne() changes * Error Handled for no ProjectID or LayerID * Clear Code * send() instead of json() --------- Co-authored-by: cubap <cubap@slu.edu> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Create sample.env * Update sample.env GitHub per @mepripri * Update CODEOWNERS * dev it and hotkeys * 188 epic middleware to upgrade imported manifests (#209) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * 139 factor out type type dependencies (#211) * determine data type by content * Removing type dependencies - Took controller and type out of controller - Added a function to detect the data types and assign the correct collection * matching tests to code move * align with main * Update driver.mjs (#217) * 188 epic middleware to upgrade imported manifests (#218) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * rename redone * This is Vault now * test objects don't validate * hulk smash 👊🏽 * _sub is no longer missing on invitees * add temp sub to new user * Update cd_dev.yaml * Update cd_dev.yaml * stop if things are missing * adding verify on main * Removing fileSystem from Github API (#214) * Removing fileSystem from Github API * Update ProjectFactory.mjs --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * 220 services for bug reporting and feedback (#221) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * cicd (#222) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * 220 services for bug reporting and feedback (#224) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * explicitly adding CORS * API call to Update Profile (#223) * API call to Update Profile * existingEmail and existingName * Changes to comments * Update User.mjs * Save AnnotationCollection, Pages and Annotations to RERUM (#215) * saveCollection to RERUM * Adding Tinypen to Create RERUM Object * Update exists.test.mjs * Update exists.test.mjs * Update Page.mjs * Update cd_dev.yaml * stop if things are missing * adding verify on main * starting some adjustments * better the tests * headed home * multiple ways to extract the data * retest with suggestions * layer/page halos * percolating deletes * setting up routes --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Import TPEN28 (#226) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Test restoration (#229) * Update cd_dev.yaml * stop if things are missing * adding verify on main * cleanup missing properties, changed method names * just this route * id shouldn't be optional here. out of date test files dropped * This should never break. What's up? * bad merge * Update exists_unit.test.mjs * test is ugly The page router needs a projectId as well to actually work * Update end_to_end_unit.test.mjs These two cannot work without a corresponding project, so it will need to be rewritten * nested in router now * Update exists.test.mjs * un-mjs * Refactor all .mjs files to .js and update imports. Closes #194 (#228) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Refactor all .mjs files to .js and update imports. Closes #194 * un-mjs * npm update * Hey I heard you like tests, so I put tests in your tests * mjs > js * no mjs, bad mjs * fine * habesroxx * how bout now * hide, Jest is coming * runner love * Update package-lock.json * jest no like to run * null != undefined * default not defaulting * fixes "id is not defined" shoulda wrote test for this * out of scope, out of effs --------- Co-authored-by: Priyal Patel <mepripri0712@gmail.com> * Update package-lock.json * Using UID to get User Projects * Update index.mjs * no label is fine for Pages * Origin Fetch * SetHeader Origin * Update index.js * Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js * Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * 231 create overwrite layer (#239) * passing through the projectID * some tests * support page * path in Page class generator * no label is fine for Pages * updating layers * AI generated tests * Update API.md * oh auth. * how'd we miss this? * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * just skip to move on * Update Layer.js * Update index.js * merged mess unwrap * dummy * Update Project.js * handle labels throughout * unerring * update layer organized * return changes * avoid hard crash * prevent crash on a page 404 * full id After I PUT a new label (this was successful) the "id" on the layer the db obj does not the the prefix and is just the hash. * you get it * vaildate all singular changes * greedier try-catch * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js commit f97723414967e86eccda10f29ab02c4d89e7a7e9 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:14:16 2025 -0500 Update index.js commit dde7c3015f32cb38d6c49cf25ac826a347310c26 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:05:02 2025 -0500 SetHeader Origin commit d2ec19844b8a15fe4497eb877d6709f898487324 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 12:47:32 2025 -0500 Origin Fetch commit 83fac3a3cf8bea72c5941b3e1cba7f95fe130d65 Merge: 6e79a8d 2e5bbbd Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 09:31:12 2025 -0500 Merge branch 'development' into import-tpen28 commit 2e5bbbd0dd8d7690d9c7f6c33394fbac28d813dc Merge: 443d0a2 9f102fb Author: Patrick Cuba <cubap@slu.edu> Date: Wed Apr 30 22:38:43 2025 -0500 Merge branch 'development' of https://github.com/CenterForDigitalHumanities/TPEN-services into development commit 443d0a2d76c8eb5226fc9b7773b695c13d690943 Author: cubap <cubap@slu.edu> Date: Wed Apr 30 15:23:02 2025 -0500 no label is fine for Pages commit 6e79a8d24aa70c8844859c5c70c1eb1766303d9d Merge: ac0182f 9f102fb Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 12:06:38 2025 -0500 Merge branch 'development' into import-tpen28 commit ac0182f62ae4ea53a32f4fb3d70baac41dc101ce Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 11:51:40 2025 -0500 Update index.mjs commit 673a5c5c7f8b729c845e05eacbfade3e8f354906 Author: Priyal Patel <mepripri0712@gmail.com> Date: Tue Apr 29 17:22:08 2025 -0500 Using UID to get User Projects commit afe664e776954a4689ae174ee7a40f69c5c5d7a6 Author: Priyal Patel <mepripri0712@gmail.com> Date: Mon Apr 28 10:16:27 2025 -0500 Update index.mjs commit 6bf9c9a704df759f553a8f7fff86556108c4c0c2 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:56:11 2025 -0500 Update index.mjs commit 0906084f2ebeaa966caf86999c3c2bc85300a314 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:50:54 2025 -0500 Update index.mjs commit 5dd077e02ca0a4fddf9df52e959a519e7368769d Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:33:53 2025 -0500 Update index.mjs commit e9971bc0bc892a9391f4918bffb45e65fddae550 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 12:18:30 2025 -0500 Update index.mjs * 422 if no pages are there. * Update index.js * Update index.js * API entries * typo --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * remove unused file --------- Co-authored-by: Onoja Victor <111019083+git-voo@users.noreply.github.com> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> Co-authored-by: Onoja <onoja.jsdev@gmail.com> Co-authored-by: mepripri <mepripri0712@gmail.com> Co-authored-by: Priyal Patel <52342511+mepripri@users.noreply.github.com> * creating separate files * cleanup imports * yuck. This wasn't even AI - it just autocompleted to CJS * more jest nonsense * Final attempt This runs but doesn't pass `allTests` * Update exists_unit.test.js * new Put for page at a time updates * put update for batch items Update Line.js Update Line.js always set rerumid save pageAndProject * auth fixes for testing * Update index.js --------- Co-authored-by: Onoja Victor <111019083+git-voo@users.noreply.github.com> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> Co-authored-by: Onoja <onoja.jsdev@gmail.com> Co-authored-by: mepripri <mepripri0712@gmail.com> Co-authored-by: Priyal Patel <52342511+mepripri@users.noreply.github.com> * Adding Tools to Project (#244) * Adding Tools to Project * getTools() * remove getTools * addTools and UpdateTools * Update index.js * Update index.js * Update index.js * Add a guard * Tool guards * Guards * Comment Changes --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> Co-authored-by: cubap <cubap@slu.edu> * Adding endpoint to add multiple lines to a page * Update index.js * Add project metrics to /my/projects (#227) * Add project metrics to /my/profile * fix failing test * moving this for router use * Relocating lastModified functions - User gets a static to set pageId of last change - line router sends change trigger - shared utils gains functions that sort of static into Classes * Update index.js * tidy * organized naming * good to go * one save behind * Let's go * better detail in modified project:ID/page:ID * Update privateProfile.js --------- Co-authored-by: cubap <cubap@slu.edu> * Update index.js * co-op * co-op * co-op * OK log time * do 401 from TPEN2 the right way * do 401 from TPEN2 the right way * do 401 from TPEN2 the right way * do 401 from TPEN2 the right way * gotta import the function * Update index.js * Need to import Project * Need to import Project * Good to go * Separating files * add metarecords to new Projects (#254) * 256 import creates bad ids (#257) * correct id for new Layers * set _id on imported project * Update Layer.js * always trim lastModified * hotifx invite code * Email invite, upgrade temp user (#259) * Now we see it * Need to do the agent in the GH action * functioning demo * touches * touchup * links * links * unused * noted todo * Use env variables instead of hard coded links * Use env variables instead of hard coded links * hotfix links in E-mail * hotfix links in E-mail * Align User With Project After Invite (#263) * need to take one of those 'limitless' pills for this * touchup * renaming, documentation, cleanup, and better code integration * renaming, documentation, cleanup, and better code integration * renaming, documentation, cleanup, and better code integration * renaming, documentation, cleanup, and better code integration * Create New Project from One Image * Update ProjectFactory.js * Removing services * Update ProjectFactory.js * Update ProjectFactory.js * MimeTypes * cleanup * Decline Project Invite - Service (#264) * Add the decline route and route logic * Unauthenticated /decline, Authenticated and Permission Checked /remove * phew a lot more to it than anticipated * changes from testing and thinking * All the way through with the right UX * All the way through with the right UX * All the way through with the right UX * cleanup * cleanup * cleanup * support text/plain request bodies (#268) * Implement optimistic locking for page and line updates Adds optimistic locking to Layer and Page updates, propagates version conflict handling through the database controller, and introduces utility functions for consistent conflict response and retry logic. Updates line and page routes to use optimistic locking and handle version conflicts gracefully, improving data integrity in concurrent editing scenarios. * IIIF Image Service (#266) * IIIF Image Service * Update ProjectFactory.js * Update ProjectFactory.js * 270 multiple updates to a page in parallel discards data (#271) * expect text * complicating updateText * all sorts of variants * allow no body * Implement optimistic locking for page and line updates Adds optimistic locking to Layer and Page updates, propagates version conflict handling through the database controller, and introduces utility functions for consistent conflict response and retry logic. Updates line and page routes to use optimistic locking and handle version conflicts gracefully, improving data integrity in concurrent editing scenarios. * Update index.js * error is currentVersion * in route * stop double res * Update index.js * Allow new header in common cors --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Copy Project API (#272) * Copy Project API * Duplicating Annotations * Copy without annotation and copy with group api * Project Cutomization API * Hotkeys Guard and include items in DB * Changes for API, refactoring * Group Members Change * Creator as OWNER and add one layer if no layers * Update ProjectFactory.js * MongoDB ProjectObject * Update ProjectFactory.js * Update ProjectFactory.js * Update ProjectFactory.js * Fixing ProjectDB Object * Documentation around module concept * Project label update API (#273) * Project label update API * picky * make this a patch request --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Level 0 image fix for TPEN28 imported Projects (#274) * Level 0 image fix for TPEN28 imported Projects * Update ProjectFactory.js * .id * Adding Creator (#275) * Adding Creator * Export Changes * creator Null in constructor * Update Page.js * creator * creator on rerum * Prev and Next * asProjectLine() removed * Update Line.js * User as Creator * Removed extra code * Save to Rerum Canvas * creator as agent and removing export creator * Update Page.js * line user * Page user * projectCreateRouter user * Update index.js * Prev and next Id for get Page * Pages next and prev and partOf * Use env variable instead of hard coded RERUM id prefixes * oo i c. sorry. undo. * User Agent as creator * Add Layer to work * Adding creator to manifest * creator for image and temp layer * creator remove * Update ProjectFactory.js * Page creator * Update index.js * Page creator * Page creator findby * Update index.js * remove * getManifestItems --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Layer and Page Management Endpoints (#278) * Fixes for updating Layers and Pages * Prepare PR * remove console.log()s * remove console.log()s * polish * polish * optimize * touchups from testing * Revert "Layer and Page Management Endpoints (#278)" (#283) This reverts commit c98a41c5ad5f8f32cac07c1f787430de05c391bd. * Project Export Message (#277) * Project Export Message * checkIfUrlExists Utility * status update * docs * deployment * Update ProjectFactory.js * Throughput errors * guarded clause --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Layer and Page Management Endpoints (#284) * Fixes for updating Layers and Pages * Prepare PR * remove console.log()s * remove console.log()s * polish * polish * optimize * touchups from testing * Reconfigure things so Page() and Layer() make more sense together * cleaning * changes from testing * changes from testing * touchup the gets * ready pr * page content change detection * remove extra whitespace * page content change detection * page content change detection * already checked userId * already checked userId * Only update if the page has changed when rebuilding order * record page modition when page is reordered * it is a typo * Allow falsey prev and next in Page.update() * All those tendrils making sure a page will update its layer if it needs to * All those tendrils making sure a page will update its layer if it needs to * change for clarity * change for clarity * change for clarity * change for clarity * touch-ups from reading through it * updates from reading through and logs for tracing to make sure it all works * updates from reading through and logs for tracing to make sure it all works * continue refactor * Find temps by id * continue refactor * No items for AnnotationCollection * Use rerum ids for temps that will be upgraded * get rid of duplicate call * get rid of duplicate call * Handle layer temp id problem as well * polish * oops * update documentation * Update Copy Project Layer Fix (#285) * Update Copy Project Layer Fix * update returned json when resolving temp id for page * let these be null, not undefined --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Project export message (#286) * Project Export Message * checkIfUrlExists Utility * status update * docs * deployment * Update ProjectFactory.js * Throughput errors * guarded clause * Failure State --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Page and Layer Label Hotfix (#287) * Page and Layer Label Hotfix * Update Page.js * Pair Coding Hotfixes (#288) * ok * ok * logs * 'none' * labels * Page label * operation logs * withOptimisticLocking operation function * updatePageAndProject() 4 paramter contentChange * removing logs * undo --------- Co-authored-by: Priyal Patel <mepripri0712@gmail.com> * ugh * ugh * ugh * ugh * ugh * ugh * ugh * ugh * remove logs from testing ugh * Project Tools Fix (#290) * Project Tools Fix * no return here * Touch up for errors --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * ah forgot to commit touchups * Leave Project Endpoint (#289) * If you love them let them go * polish * Creator on text and bounds (#294) * Development (#234) * update metadata (#171) * update metadata * modify route name and db.update * update db.update dependent * cleanup --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * quickfix * cleanup * modify db.update to receive one param {data, collection} * nodiff * restore action(data, collection) structure * undiff * Changed Collections Parameter for Save() * Removing /:id put Call * Removing the Limit from express.json() * Removing the Limit from express.json() * getting started with Vault (#190) * getting started with Vault * newer Vault * tests * removing redundant code * proper tests passing * sample Vault * Bryan's refusal to .jsonld makes this not work as expected * loading resources This is incomplete by design. We need to ask Vault to add any resources we want resolved * expanding the Manifest a bit * touch up for merge * touch up for merge --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Current Project IIIF manifest Creation (#187) * Current Project IIIF manifest Creation * Refactored the exportManifest() and endpoint name * Changed the exportManifest() function * TPEN ID error handled * endpoint to move the manifest.json to TPEN-Static-Dev * Changed @id to id * Getting all Ids * Console Clean up * Added env variables * Adding Imports * Adding Imports * Deleting Ids * Updating Logic Added * User not a member cannot change the manifest * Removing project2 * Adding comments to functions * add hotkeys service (#184) * add hotkeys service * hotkey endpoints * aggregate hotkeys during project retrieval * specify hotkey fields to include * cleanup * Update Hotkeys.js * Update ProjectFactory.mjs * Return hotkeys as an Array of Strings * aligning with Class changes * remove create, since .save is not acting correctly * cleanup and drop .post * tests restored no Jest here, just checking exists. * tests and sinon upgrade * no db tests directly * Update exists_unit.test.mjs * putting post back in... * adding create back with safety * adding upsert to accomodate bad errors * Update Hotkeys.js * uncatch to let errors through * expect the errors to come back * switch to jest tests --------- Co-authored-by: cubap <cubap@slu.edu> * hotifx * hotfix for symbols. * delete enabled * Create API.md * collaborators and users * add markdown reader * package for markdown * Update API.md * Update API.md * touch * ah codes * proxy for internal use (#201) * Endpoint to save changes for the new layer (#199) * Adding endpoint to save changes from the layer * Adding New Layer * No Empty Label and no Annotations * Updated new Layer * Adding Items to partOf * Changing id convention * Removing updating layer * Annotation Change * Adding Delete Endpoint * not sure... This type of thing? * Label Change * Added Layer Class * Adding rerum ids to delete and add * Changing tests * Update exists.test.mjs * Changing LayerLabel * Changes AnnotationCollection Structure * Update Pages API * Updating partOf Ids in case of any change * Adding Layer Metadata Label Change * example results as a base for comments, delete these files before merge. * Adding AddLayer Commenting Rest of the APIs * Added DeleteLayer Back * Deleting json files * Updates to the comments * Making Project to Layer Changes * Renaming layerAnnotationCollection * Removing UpdateOne() changes * Removing UpdateOne() changes * Removing UpdateOne() changes * Error Handled for no ProjectID or LayerID * Clear Code * send() instead of json() --------- Co-authored-by: cubap <cubap@slu.edu> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Create sample.env * Update sample.env GitHub per @mepripri * Update CODEOWNERS * dev it and hotkeys * 188 epic middleware to upgrade imported manifests (#209) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * 139 factor out type type dependencies (#211) * determine data type by content * Removing type dependencies - Took controller and type out of controller - Added a function to detect the data types and assign the correct collection * matching tests to code move * align with main * Update driver.mjs (#217) * 188 epic middleware to upgrade imported manifests (#218) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * rename redone * This is Vault now * test objects don't validate * hulk smash 👊🏽 * _sub is no longer missing on invitees * add temp sub to new user * Update cd_dev.yaml * Update cd_dev.yaml * stop if things are missing * adding verify on main * Removing fileSystem from Github API (#214) * Removing fileSystem from Github API * Update ProjectFactory.mjs --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * 220 services for bug reporting and feedback (#221) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * cicd (#222) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * 220 services for bug reporting and feedback (#224) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * explicitly adding CORS * API call to Update Profile (#223) * API call to Update Profile * existingEmail and existingName * Changes to comments * Update User.mjs * Save AnnotationCollection, Pages and Annotations to RERUM (#215) * saveCollection to RERUM * Adding Tinypen to Create RERUM Object * Update exists.test.mjs * Update exists.test.mjs * Update Page.mjs * Update cd_dev.yaml * stop if things are missing * adding verify on main * starting some adjustments * better the tests * headed home * multiple ways to extract the data * retest with suggestions * layer/page halos * percolating deletes * setting up routes --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Import TPEN28 (#226) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Test restoration (#229) * Update cd_dev.yaml * stop if things are missing * adding verify on main * cleanup missing properties, changed method names * just this route * id shouldn't be optional here. out of date test files dropped * This should never break. What's up? * bad merge * Update exists_unit.test.mjs * test is ugly The page router needs a projectId as well to actually work * Update end_to_end_unit.test.mjs These two cannot work without a corresponding project, so it will need to be rewritten * nested in router now * Update exists.test.mjs * un-mjs * Refactor all .mjs files to .js and update imports. Closes #194 (#228) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Refactor all .mjs files to .js and update imports. Closes #194 * un-mjs * npm update * Hey I heard you like tests, so I put tests in your tests * mjs > js * no mjs, bad mjs * fine * habesroxx * how bout now * hide, Jest is coming * runner love * Update package-lock.json * jest no like to run * null != undefined * default not defaulting * fixes "id is not defined" shoulda wrote test for this * out of scope, out of effs --------- Co-authored-by: Priyal Patel <mepripri0712@gmail.com> * Update package-lock.json * Using UID to get User Projects * Update index.mjs * no label is fine for Pages * Origin Fetch * SetHeader Origin * Update index.js * Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js * Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * 231 create overwrite layer (#239) * passing through the projectID * some tests * support page * path in Page class generator * no label is fine for Pages * updating layers * AI generated tests * Update API.md * oh auth. * how'd we miss this? * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * just skip to move on * Update Layer.js * Update index.js * merged mess unwrap * dummy * Update Project.js * handle labels throughout * unerring * update layer organized * return changes * avoid hard crash * prevent crash on a page 404 * full id After I PUT a new label (this was successful) the "id" on the layer the db obj does not the the prefix and is just the hash. * you get it * vaildate all singular changes * greedier try-catch * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js commit f97723414967e86eccda10f29ab02c4d89e7a7e9 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:14:16 2025 -0500 Update index.js commit dde7c3015f32cb38d6c49cf25ac826a347310c26 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 13:05:02 2025 -0500 SetHeader Origin commit d2ec19844b8a15fe4497eb877d6709f898487324 Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 12:47:32 2025 -0500 Origin Fetch commit 83fac3a3cf8bea72c5941b3e1cba7f95fe130d65 Merge: 6e79a8d 2e5bbbd Author: Priyal Patel <mepripri0712@gmail.com> Date: Thu May 1 09:31:12 2025 -0500 Merge branch 'development' into import-tpen28 commit 2e5bbbd0dd8d7690d9c7f6c33394fbac28d813dc Merge: 443d0a2 9f102fb Author: Patrick Cuba <cubap@slu.edu> Date: Wed Apr 30 22:38:43 2025 -0500 Merge branch 'development' of https://github.com/CenterForDigitalHumanities/TPEN-services into development commit 443d0a2d76c8eb5226fc9b7773b695c13d690943 Author: cubap <cubap@slu.edu> Date: Wed Apr 30 15:23:02 2025 -0500 no label is fine for Pages commit 6e79a8d24aa70c8844859c5c70c1eb1766303d9d Merge: ac0182f 9f102fb Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 12:06:38 2025 -0500 Merge branch 'development' into import-tpen28 commit ac0182f62ae4ea53a32f4fb3d70baac41dc101ce Author: Priyal Patel <mepripri0712@gmail.com> Date: Wed Apr 30 11:51:40 2025 -0500 Update index.mjs commit 673a5c5c7f8b729c845e05eacbfade3e8f354906 Author: Priyal Patel <mepripri0712@gmail.com> Date: Tue Apr 29 17:22:08 2025 -0500 Using UID to get User Projects commit afe664e776954a4689ae174ee7a40f69c5c5d7a6 Author: Priyal Patel <mepripri0712@gmail.com> Date: Mon Apr 28 10:16:27 2025 -0500 Update index.mjs commit 6bf9c9a704df759f553a8f7fff86556108c4c0c2 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:56:11 2025 -0500 Update index.mjs commit 0906084f2ebeaa966caf86999c3c2bc85300a314 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:50:54 2025 -0500 Update index.mjs commit 5dd077e02ca0a4fddf9df52e959a519e7368769d Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 14:33:53 2025 -0500 Update index.mjs commit e9971bc0bc892a9391f4918bffb45e65fddae550 Author: Priyal Patel <mepripri0712@gmail.com> Date: Fri Apr 25 12:18:30 2025 -0500 Update index.mjs * 422 if no pages are there. * Update index.js * Update index.js * API entries * typo --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * remove unused file --------- Co-authored-by: Onoja Victor <111019083+git-voo@users.noreply.github.com> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> Co-authored-by: Onoja <onoja.jsdev@gmail.com> Co-authored-by: mepripri <mepripri0712@gmail.com> Co-authored-by: Priyal Patel <52342511+mepripri@users.noreply.github.com> * cherrypicked * This spot in updateText too --------- Co-authored-by: Onoja Victor <111019083+git-voo@users.noreply.github.com> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> Co-authored-by: Onoja <onoja.jsdev@gmail.com> Co-authored-by: mepripri <mepripri0712@gmail.com> Co-authored-by: Priyal Patel <52342511+mepripri@users.noreply.github.com> * 276 upgrade temp ids referenced in rerum data (#296) * Development (#234) * update metadata (#171) * update metadata * modify route name and db.update * update db.update dependent * cleanup --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * quickfix * cleanup * modify db.update to receive one param {data, collection} * nodiff * restore action(data, collection) structure * undiff * Changed Collections Parameter for Save() * Removing /:id put Call * Removing the Limit from express.json() * Removing the Limit from express.json() * getting started with Vault (#190) * getting started with Vault * newer Vault * tests * removing redundant code * proper tests passing * sample Vault * Bryan's refusal to .jsonld makes this not work as expected * loading resources This is incomplete by design. We need to ask Vault to add any resources we want resolved * expanding the Manifest a bit * touch up for merge * touch up for merge --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Current Project IIIF manifest Creation (#187) * Current Project IIIF manifest Creation * Refactored the exportManifest() and endpoint name * Changed the exportManifest() function * TPEN ID error handled * endpoint to move the manifest.json to TPEN-Static-Dev * Changed @id to id * Getting all Ids * Console Clean up * Added env variables * Adding Imports * Adding Imports * Deleting Ids * Updating Logic Added * User not a member cannot change the manifest * Removing project2 * Adding comments to functions * add hotkeys service (#184) * add hotkeys service * hotkey endpoints * aggregate hotkeys during project retrieval * specify hotkey fields to include * cleanup * Update Hotkeys.js * Update ProjectFactory.mjs * Return hotkeys as an Array of Strings * aligning with Class changes * remove create, since .save is not acting correctly * cleanup and drop .post * tests restored no Jest here, just checking exists. * tests and sinon upgrade * no db tests directly * Update exists_unit.test.mjs * putting post back in... * adding create back with safety * adding upsert to accomodate bad errors * Update Hotkeys.js * uncatch to let errors through * expect the errors to come back * switch to jest tests --------- Co-authored-by: cubap <cubap@slu.edu> * hotifx * hotfix for symbols. * delete enabled * Create API.md * collaborators and users * add markdown reader * package for markdown * Update API.md * Update API.md * touch * ah codes * proxy for internal use (#201) * Endpoint to save changes for the new layer (#199) * Adding endpoint to save changes from the layer * Adding New Layer * No Empty Label and no Annotations * Updated new Layer * Adding Items to partOf * Changing id convention * Removing updating layer * Annotation Change * Adding Delete Endpoint * not sure... This type of thing? * Label Change * Added Layer Class * Adding rerum ids to delete and add * Changing tests * Update exists.test.mjs * Changing LayerLabel * Changes AnnotationCollection Structure * Update Pages API * Updating partOf Ids in case of any change * Adding Layer Metadata Label Change * example results as a base for comments, delete these files before merge. * Adding AddLayer Commenting Rest of the APIs * Added DeleteLayer Back * Deleting json files * Updates to the comments * Making Project to Layer Changes * Renaming layerAnnotationCollection * Removing UpdateOne() changes * Removing UpdateOne() changes * Removing UpdateOne() changes * Error Handled for no ProjectID or LayerID * Clear Code * send() instead of json() --------- Co-authored-by: cubap <cubap@slu.edu> Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * Create sample.env * Update sample.env GitHub per @mepripri * Update CODEOWNERS * dev it and hotkeys * 188 epic middleware to upgrade imported manifests (#209) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * 139 factor out type type dependencies (#211) * determine data type by content * Removing type dependencies - Took controller and type out of controller - Added a function to detect the data types and assign the correct collection * matching tests to code move * align with main * Update driver.mjs (#217) * 188 epic middleware to upgrade imported manifests (#218) * bring in vault improve Project building from Manifest import * fixes #206 * add singleton vault as utility fix #208 * cleanup logs * rename redone * This is Vault now * test objects don't validate * hulk smash 👊🏽 * _sub is no longer missing on invitees * add temp sub to new user * Update cd_dev.yaml * Update cd_dev.yaml * stop if things are missing * adding verify on main * Removing fileSystem from Github API (#214) * Removing fileSystem from Github API * Update ProjectFactory.mjs --------- Co-authored-by: Bryan Haberberger <bryan.j.haberberger@slu.edu> * 220 services for bug reporting and feedback (#221) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * cicd (#222) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * 220 services for bug reporting and feedback (#224) * file dump init * services for feedback * /feedback/feedback is not a good route * Update cd_dev.yaml * stop if things are missing * adding verify on main * test results * added docs and ES6 conversion * what the Golden AI hell is adding imports from my docs? * explicitly adding CORS * API call to Update Profile (#223) * API call to Update Profile * existingEmail and existingName * Changes to comments * Update User.mjs * Save AnnotationCollection, Pages and Annotations to RERUM (#215) * saveCollection to RERUM * Adding Tinypen to Create RERUM Object * Update exists.test.mjs * Update exists.test.mjs * Update Page.mjs * Update cd_dev.yaml * stop if things are missing * adding verify on main * starting some adjustments * better the tests * headed home * multiple ways to extract the data * retest with suggestions * layer/page halos * percolating deletes * setting up routes --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Import TPEN28 (#226) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Test restoration (#229) * Update cd_dev.yaml * stop if things are missing * adding verify on main * cleanup missing properties, changed method names * just this route * id shouldn't be optional here. out of date test files dropped * This should never break. What's up? * bad merge * Update exists_unit.test.mjs * test is ugly The page router needs a projectId as well to actually work * Update end_to_end_unit.test.mjs These two cannot work without a corresponding project, so it will need to be rewritten * nested in router now * Update exists.test.mjs * un-mjs * Refactor all .mjs files to .js and update imports. Closes #194 (#228) * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update cd_dev.yaml * stop if things are missing * adding verify on main * Update ci_dev.yaml (#219) * Update ci_dev.yaml * Update cd_prod.yaml * Update ci_prod.yaml * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Refactor all .mjs files to .js and update imports. Closes #194 * un-mjs * npm update * Hey I heard you like tests, so I put tests in your tests * mjs > js * no mjs, bad mjs * fine * habesroxx * how bout now * hide, Jest is coming * runner love * Update package-lock.json * jest no like to run * null != undefined * default not defaulting * fixes "id is not defined" shoulda wrote test for this * out of scope, out of effs --------- Co-authored-by: Priyal Patel <mepripri0712@gmail.com> * Update package-lock.json * Using UID to get User Projects * Update index.mjs * no label is fine for Pages * Origin Fetch * SetHeader Origin * Update index.js * Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get User Projects * Update index.mjs * Origin Fetch * SetHeader Origin * Update index.js * Update index.js * Update index.js * Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> * 231 create overwrite layer (#239) * passing through the projectID * some tests * support page * path in Page class generator * no label is fine for Pages * updating layers * AI generated tests * Update API.md * oh auth. * how'd we miss this? * old tests * adjust for tests * default exports for tests * wrangling AI tests Jest mock is a nightmare. * just skip to move on * Update Layer.js * Update index.js * merged mess unwrap * dummy * Update Project.js * handle labels throughout * unerring * update layer organized * return changes * avoid hard crash * prevent crash on a page 404 * full id After I PUT a new label (this was successful) the "id" on the layer the db obj does not the the prefix and is just the hash. * you get it * vaildate all singular changes * greedier try-catch * Squashed commit of the following: commit 44b75cf175f43ef5b7736cf7f7f9754b1dcd7f36 Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Wed May 7 10:13:21 2025 -0500 Localhost URLS Validating (#242) * Update index.js * Update index.js * Update validateURL.js --------- Co-authored-by: Patrick Cuba <cubap@slu.edu> commit 032ef458dd9c0602ca3c23b795a39f0de2dd7d7d Merge: f977234 52edaab Author: cubap <cubap@slu.edu> Date: Mon May 5 10:40:24 2025 -0500 Merge branch 'development' into import-tpen28 commit 52edaab21d47427f3003c94b94b848f64f04850c Author: Priyal Patel <52342511+mepripri@users.noreply.github.com> Date: Fri May 2 09:36:27 2025 -0500 Getting User Projects (#237) * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Update index.mjs * Using UID to get…
1 parent 23711c9 commit b9eb3dc

56 files changed

Lines changed: 3141 additions & 2794 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 9 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -6,202 +6,35 @@ This file provides guidance to AI Assistants when working with code in this repo
66

77
TPEN Services is a Node.js Express API service for TPEN3 (Transcription for Paleographical and Editorial Notation). This provides RESTful APIs for digital humanities, cultural heritage, annotation services, and IIIF manifest handling. The service supports multiple database backends (MongoDB, MariaDB) and uses Auth0 for authentication.
88

9-
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
10-
119
## Working Effectively
1210

1311
### Bootstrap, Build, and Test the Repository
14-
- Copy environment configuration: `cp .env.development .env`
12+
- Environment configuration is in .env. Do not overwrite the existing .env file. If an .env file does not exist then copy environment configuration: `cp .env.development .env`
1513
- Install dependencies: `npm install` -- takes up to 20 seconds. NEVER CANCEL. Set timeout to 60+ seconds.
16-
- Run unit tests: `npm run unitTests` -- takes 12 seconds. NEVER CANCEL. Set timeout to 30+ seconds.
17-
- Run existence tests: `npm run existsTests` -- takes 7 seconds. NEVER CANCEL. Set timeout to 30+ seconds.
18-
- Run all tests: `npm run allTests` -- takes 12 seconds. NEVER CANCEL. Set timeout to 30+ seconds.
1914

2015
### Run the Application
2116
- ALWAYS run the bootstrapping steps first.
2217
- Production server: `npm start` -- starts on port 3011
2318
- Development server: `npm run dev` -- starts with nodemon auto-reload on port 3011
24-
- Test basic functionality: `curl http://localhost:3011/` should return "TPEN3 SERVICES BABY!!!"
25-
26-
### Environment Requirements
27-
- Node.js >= 22.20.0
28-
- MongoDB (for database tests and full functionality)
29-
- MariaDB (for database tests and full functionality)
30-
- Copy `.env.development` to `.env` for basic functionality
31-
- For full functionality, configure database connection strings in `.env`
19+
- Test basic functionality: `curl http://localhost:3011/API.html` should return the API page.
3220

3321
## Validation
3422

3523
### Always Validate Core Functionality After Changes
36-
- Start the application: `npm start` or `npm run dev`
37-
- Test the root endpoint: `curl http://localhost:3011/` -- should return HTML with "TPEN3 SERVICES BABY!!!"
38-
- Run unit tests that don't require databases: `npm run unitTests` -- many tests pass without database connections
39-
- Run existence tests: `npm run existsTests` -- validates route registration and class imports
40-
- ALWAYS wait for full test completion. Tests may appear to hang but will complete within 12 seconds.
41-
- NOTE: Application may crash after serving initial requests due to database connection attempts - this is expected behavior without running MongoDB/MariaDB.
42-
43-
### Test Categories Available
44-
- `npm run unitTests` -- Core unit tests (some require databases)
45-
- `npm run existsTests` -- Route and class existence validation (database-independent)
46-
- `npm run functionsTests` -- Function-level tests
47-
- `npm run E2Etests` -- End-to-end API tests
48-
- `npm run dbTests` -- Database-specific tests (require running databases)
49-
- `npm run authTest` -- Authentication tests (require Auth0 configuration)
24+
- Run `npm run allTests` once you have completed your task and need to verify correctness before continuing.
25+
- ALWAYS wait for full test completion. Tests can take minutes. NEVER CANCEL.
26+
- NOTE: Application may crash after serving initial requests due to database connection attempts - this is expected behavior without a connection to MongoDB.
5027

5128
### Expected Test Behavior
5229
- Tests requiring databases will timeout/fail without MongoDB/MariaDB running
5330
- Auth tests fail without proper AUDIENCE and DOMAIN environment variables
5431
- Core functionality tests (exists, basic units) should pass with minimal `.env` setup
55-
- Database-independent tests complete in 6-15 seconds
56-
57-
## Common Tasks
58-
59-
### Repository Structure
60-
```
61-
/home/runner/work/TPEN-services/TPEN-services/
62-
├── app.js # Express application setup
63-
├── bin/tpen3_services.js # Server entry point
64-
├── package.json # Dependencies and scripts
65-
├── jest.config.js # Test configuration
66-
├── config.env # Safe defaults (committed)
67-
├── .env.development # Development template
68-
├── .env.production # Production template
69-
├── API.md # API documentation
70-
├── classes/ # Domain model classes
71-
│ ├── Project/ # Project management
72-
│ ├── User/ # User management
73-
│ ├── Group/ # Group management
74-
│ ├── Layer/ # Annotation layers
75-
│ ├── Line/ # Text line handling
76-
│ ├── Page/ # Page management
77-
│ └── Manifest/ # IIIF manifest handling
78-
├── database/ # Database drivers
79-
│ ├── mongo/ # MongoDB controller
80-
│ ├── maria/ # MariaDB controller
81-
│ └── tiny/ # TinyPEN API controller
82-
├── auth/ # Auth0 authentication
83-
├── project/ # Project API routes
84-
├── userProfile/ # User API routes
85-
├── line/ # Line API routes
86-
├── page/ # Page API routes
87-
└── utilities/ # Helper functions
88-
```
89-
90-
### Key API Endpoints
91-
- `GET /` -- Service status (returns "TPEN3 SERVICES BABY!!!")
92-
- `GET /project/:id` -- Get project by ID (requires authentication)
93-
- `POST /project/create` -- Create new project (requires authentication)
94-
- `POST /project/import?createFrom=URL` -- Import project from IIIF manifest
95-
- `GET /user/:id` -- Get user profile (public)
96-
- `GET /my/profile` -- Get authenticated user profile
97-
- `GET /line/:id` -- Get text line annotation
98-
- `GET /page/:id` -- Get annotation page
99-
100-
### Authentication
101-
- Uses Auth0 JWT bearer tokens
102-
- Protected endpoints require `Authorization: Bearer <token>` header
103-
- Environment variables AUDIENCE and DOMAIN must be configured for auth tests
104-
- Public endpoints: `/`, `/user/:id`
105-
- Protected endpoints: `/project/*`, `/my/*`, most POST/PUT/DELETE operations
106-
107-
### Database Configuration
108-
- MongoDB: Configure MONGODB and MONGODBNAME in `.env`
109-
- MariaDB: Configure MARIADB, MARIADBNAME, MARIADBUSER, MARIADBPASSWORD in `.env`
110-
- TinyPEN API: Configure TINYPEN in `.env`
111-
- Default configurations in `config.env` point to localhost development services
11232

11333
### Development Workflow
114-
1. Always start with: `cp .env.development .env && npm install`
34+
1. Ensure .env exists (if not: `cp .env.development .env`) and run `npm install`
11535
2. Make code changes
116-
3. Test with: `npm run existsTests` (fast, database-independent)
117-
4. For database changes: ensure MongoDB/MariaDB running, then `npm run dbTests`
118-
5. For API changes: `npm run E2Etests`
119-
6. Start dev server: `npm run dev`
120-
7. Test manually: `curl http://localhost:3011/` and relevant endpoints
121-
122-
### Debugging and Troubleshooting
123-
- Application logs appear in console when running `npm start` or `npm run dev`
124-
- Database connection errors indicate missing database services
125-
- Auth errors indicate missing AUDIENCE/DOMAIN environment variables
126-
- 404 errors on routes indicate route registration issues
127-
- Check `app.js` for middleware and route registration
128-
- Jest warnings about experimental VM modules are expected (ES module usage)
129-
130-
### CI/CD Integration
131-
- GitHub Actions workflows in `.github/workflows/`
132-
- `test_pushes.yaml` runs unit tests on pushes
133-
- `ci_dev.yaml` runs E2E tests on PRs to development
134-
- Tests require environment secrets configured in GitHub repository settings
135-
136-
### Performance Notes
137-
- Application startup: 2-3 seconds
138-
- npm install: ~1-20 seconds depending on cache (timeout: 60+ seconds)
139-
- Unit tests: ~12 seconds (timeout: 30+ seconds)
140-
- Existence tests: ~7 seconds (timeout: 30+ seconds)
141-
- Database tests: variable depending on database response times
142-
143-
### Critical Environment Variables
144-
Required for basic functionality:
145-
- `PORT` (default: 3011)
146-
- `SERVERURL` (default: http://localhost:3011)
147-
148-
Required for database functionality:
149-
- `MONGODB` (MongoDB connection string)
150-
- `MONGODBNAME` (MongoDB database name)
151-
- `MARIADB` (MariaDB host)
152-
- `MARIADBNAME`, `MARIADBUSER`, `MARIADBPASSWORD` (MariaDB credentials)
153-
154-
Required for authentication:
155-
- `AUDIENCE` (Auth0 audience)
156-
- `DOMAIN` (Auth0 domain)
157-
158-
Required for external services:
159-
- `TINYPEN` (TinyPEN API base URL)
160-
- `RERUMURL` (RERUM repository URL)
161-
162-
### Manual Testing Scenarios
163-
After making changes, always validate:
164-
1. **Basic Service**: Start server with `npm start`, test with `curl http://localhost:3011/` - should return HTML containing "TPEN3 SERVICES BABY!!!" in the response body
165-
2. **Route Registration**: `npm run existsTests` passes without errors
166-
3. **Core Logic**: `npm run unitTests` passes tests that don't require databases (some MongoDB tests will timeout - this is expected)
167-
4. **API Authentication**: Protected endpoints like `/my/profile` return 401 status code without valid tokens
168-
5. **Application Behavior**: Server may crash after serving requests when MongoDB is not available - this is expected and indicates database connection attempts are working correctly
169-
170-
### Complete Validation Workflow Example
171-
```bash
172-
# Basic setup
173-
cp .env.development .env
174-
npm install
175-
176-
# Test core functionality without databases
177-
npm run existsTests # Should pass completely
178-
npm run unitTests # Should pass most tests, MongoDB tests will timeout
179-
180-
# Test application serving
181-
npm start &
182-
sleep 3
183-
curl http://localhost:3011/ # Should return HTML with service name
184-
curl -w "Status: %{http_code}\n" http://localhost:3011/my/profile # Should return 401
185-
kill %1 # Stop the background server
186-
```
187-
188-
### Common File Locations
189-
- Main application entry: `bin/tpen3_services.js`
190-
- Express app setup: `app.js`
191-
- Route definitions: `project/index.js`, `userProfile/index.js`, etc.
192-
- Database controllers: `database/mongo/controller.js`, `database/maria/controller.js`
193-
- Authentication middleware: `auth/index.js`
194-
- Domain models: `classes/[Entity]/[Entity].js`
195-
- Configuration: `config.env` (safe defaults), `.env.development` and `.env.production` (templates), `.env` (local config, gitignored)
196-
197-
### Dependencies and Versions
198-
- Express.js for REST API framework
199-
- MongoDB driver for document storage
200-
- MariaDB driver for relational storage
201-
- Auth0 libraries for JWT authentication
202-
- Jest for testing framework
203-
- Nodemon for development auto-reload
204-
- IIIF libraries for manifest handling
36+
3. Once the task is complete and verification is needed: `npm run allTests`
37+
4. Start app if manual testing is needed.
20538

20639
### External Resources
20740
- [IIIF Presentation API](https://iiif.io/api/presentation/)
@@ -231,4 +64,4 @@ kill %1 # Stop the background server
23164
7. Use JDoc style for code documentation. Cleanup, fix, or generate documentation for the code you work on as you encounter it.
23265
8. We use `npm start` often to run the app locally. However, do not make code edits based on this assumption. Production and development load balance in the app with pm2, not by using `npm start`
23366
9. NEVER CANCEL long-running commands. Application builds and tests are designed to complete within documented timeouts. Always wait for completion to ensure accurate validation of changes.
234-
10. All work on issues for bugs, features, and enhancements will target the `development` branch. The `main` branch will only be targetted with hotfixes by admins or by PRs from the `development` branch. New work should branch from `development`.
67+
10. All work on issues for bugs, features, and enhancements will target the `development` branch. The `main` branch will only be targetted with hotfixes by admins or by PRs from the `development` branch. New work should branch from `development`.

.claude/settings.json

Lines changed: 0 additions & 18 deletions
This file was deleted.

.claude/statusline-command.sh

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)