From 8f1e7f5e1b0ffc382d76bdf0deab348d1debee9b Mon Sep 17 00:00:00 2001 From: Robert Fletcher Date: Fri, 13 Feb 2026 19:35:31 -0800 Subject: [PATCH] move main assets to package.json --- app/assets/javascripts/application.js | 8 ++--- config/initializers/assets.rb | 7 +++- package.json | 6 ++++ pnpm-lock.yaml | 40 ++++++++++++++++----- vendor/assets/javascripts/backbone-min.js | 1 - vendor/assets/javascripts/jquery-min.js | 4 --- vendor/assets/javascripts/mousetrap-min.js | 9 ----- vendor/assets/javascripts/underscore-min.js | 1 - 8 files changed, 48 insertions(+), 28 deletions(-) delete mode 100644 vendor/assets/javascripts/backbone-min.js delete mode 100644 vendor/assets/javascripts/jquery-min.js delete mode 100644 vendor/assets/javascripts/mousetrap-min.js delete mode 100644 vendor/assets/javascripts/underscore-min.js diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 5ddc7b4d9..471b9971b 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -1,10 +1,10 @@ -//= require jquery-min.js +//= require jquery.min.js //= require bootstrap-min.js //= require bootstrap.file-input.js -//= require mousetrap-min.js +//= require mousetrap.js //= require jquery-visible-min.js -//= require underscore-min.js -//= require backbone-min.js +//= require underscore.js +//= require backbone.js _.templateSettings = { interpolate: /\{\{=(.+?)\}\}/g, diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 8544c07c5..e47bf0ebc 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -6,4 +6,9 @@ Rails.application.config.assets.version = "1.0" # Add additional assets to the asset load path. -# Rails.application.config.assets.paths << Emoji.images_path +Rails.application.config.assets.paths += [ + Rails.root.join("node_modules/backbone"), + Rails.root.join("node_modules/jquery"), + Rails.root.join("node_modules/mousetrap"), + Rails.root.join("node_modules/underscore") +] diff --git a/package.json b/package.json index 0322f7513..949e41a0c 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,12 @@ "eslint": "eslint app/assets/javascripts/ spec/javascript/spec/", "stylelint": "stylelint 'app/assets/stylesheets/**/*.css'" }, + "dependencies": { + "backbone": "1.0.0", + "jquery": "1.9.1", + "mousetrap": "1.4.6", + "underscore": "1.4.4" + }, "devDependencies": { "@eslint/js": "^9.21.0", "chai": "1.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c64c3161f..ddecd00ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,19 @@ settings: importers: .: + dependencies: + backbone: + specifier: 1.0.0 + version: 1.0.0 + jquery: + specifier: 1.9.1 + version: 1.9.1 + mousetrap: + specifier: 1.4.6 + version: 1.4.6 + underscore: + specifier: 1.4.4 + version: 1.4.4 devDependencies: '@eslint/js': specifier: ^9.21.0 @@ -223,8 +236,8 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - backbone@1.6.1: - resolution: {integrity: sha512-YQzWxOrIgL6BoFnZjThVN99smKYhyEXXFyJJ2lsF1wJLyo4t+QjmkLrH8/fN22FZ4ykF70Xq7PgTugJVR4zS9Q==} + backbone@1.0.0: + resolution: {integrity: sha512-8rhC3q3npBssGGBArAY5RF4lvIpciCvDY0lHmFrLqOi0/fj5rm25H0DJrJFXPwRnuIzIhQ6eS0j7URAxV3u9hA==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -576,6 +589,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jquery@1.9.1: + resolution: {integrity: sha512-gK7jP5cOEUzjyL0dy7MEMfeSFlmt1yNSdZK98CL8W6o0DiNVW5O9hLcD2bdl48mL8q7bEJgd7d9AhhDaN+iDSQ==} + deprecated: This version is deprecated. Please upgrade to the latest version or find support at https://www.herodevs.com/support/jquery-nes. + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -696,6 +713,9 @@ packages: engines: {node: '>= 0.10.x', npm: '>= 1.4.x'} hasBin: true + mousetrap@1.4.6: + resolution: {integrity: sha512-7i4YgGN/m6GMJbn2g4pyrKFUNEjWIICmuiywWDzdph8qASzEGk+VB3vQYrnxdBkuMTP4ZE+K92TKeQHL92wZOQ==} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -937,8 +957,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - underscore@1.13.7: - resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + underscore@1.4.4: + resolution: {integrity: sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==} unicorn-magic@0.4.0: resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} @@ -1137,9 +1157,9 @@ snapshots: astral-regex@2.0.0: {} - backbone@1.6.1: + backbone@1.0.0: dependencies: - underscore: 1.13.7 + underscore: 1.4.4 balanced-match@1.0.2: {} @@ -1174,7 +1194,7 @@ snapshots: chai-backbone@0.9.4: dependencies: - backbone: 1.6.1 + backbone: 1.0.0 chai-changes: 1.3.6 sinon: 1.7.1 @@ -1471,6 +1491,8 @@ snapshots: isexe@2.0.0: {} + jquery@1.9.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -1584,6 +1606,8 @@ snapshots: mkdirp: 0.5.1 supports-color: 3.1.2 + mousetrap@1.4.6: {} + ms@2.0.0: {} ms@2.1.3: {} @@ -1838,7 +1862,7 @@ snapshots: dependencies: prelude-ls: 1.2.1 - underscore@1.13.7: {} + underscore@1.4.4: {} unicorn-magic@0.4.0: {} diff --git a/vendor/assets/javascripts/backbone-min.js b/vendor/assets/javascripts/backbone-min.js deleted file mode 100644 index bce4fbc1b..000000000 --- a/vendor/assets/javascripts/backbone-min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var t=this;var e=t.Backbone;var i=[];var r=i.push;var s=i.slice;var n=i.splice;var a;if(typeof exports!=="undefined"){a=exports}else{a=t.Backbone={}}a.VERSION="1.0.0";var h=t._;if(!h&&typeof require!=="undefined")h=require("underscore");a.$=t.jQuery||t.Zepto||t.ender||t.$;a.noConflict=function(){t.Backbone=e;return this};a.emulateHTTP=false;a.emulateJSON=false;var o=a.Events={on:function(t,e,i){if(!l(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,i){if(!l(this,"once",t,[e,i])||!e)return this;var r=this;var s=h.once(function(){r.off(t,s);e.apply(this,arguments)});s._callback=e;return this.on(t,s,i)},off:function(t,e,i){var r,s,n,a,o,u,c,f;if(!this._events||!l(this,"off",t,[e,i]))return this;if(!t&&!e&&!i){this._events={};return this}a=t?[t]:h.keys(this._events);for(o=0,u=a.length;o").attr(t);this.setElement(e,false)}else{this.setElement(h.result(this,"el"),false)}}});a.sync=function(t,e,i){var r=k[t];h.defaults(i||(i={}),{emulateHTTP:a.emulateHTTP,emulateJSON:a.emulateJSON});var s={type:r,dataType:"json"};if(!i.url){s.url=h.result(e,"url")||U()}if(i.data==null&&e&&(t==="create"||t==="update"||t==="patch")){s.contentType="application/json";s.data=JSON.stringify(i.attrs||e.toJSON(i))}if(i.emulateJSON){s.contentType="application/x-www-form-urlencoded";s.data=s.data?{model:s.data}:{}}if(i.emulateHTTP&&(r==="PUT"||r==="DELETE"||r==="PATCH")){s.type="POST";if(i.emulateJSON)s.data._method=r;var n=i.beforeSend;i.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",r);if(n)return n.apply(this,arguments)}}if(s.type!=="GET"&&!i.emulateJSON){s.processData=false}if(s.type==="PATCH"&&window.ActiveXObject&&!(window.external&&window.external.msActiveXFilteringEnabled)){s.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var o=i.xhr=a.ajax(h.extend(s,i));e.trigger("request",e,o,i);return o};var k={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};a.ajax=function(){return a.$.ajax.apply(a.$,arguments)};var S=a.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var $=/\((.*?)\)/g;var T=/(\(\?)?:\w+/g;var H=/\*\w+/g;var A=/[\-{}\[\]+?.,\\\^$|#\s]/g;h.extend(S.prototype,o,{initialize:function(){},route:function(t,e,i){if(!h.isRegExp(t))t=this._routeToRegExp(t);if(h.isFunction(e)){i=e;e=""}if(!i)i=this[e];var r=this;a.history.route(t,function(s){var n=r._extractParameters(t,s);i&&i.apply(r,n);r.trigger.apply(r,["route:"+e].concat(n));r.trigger("route",e,n);a.history.trigger("route",r,e,n)});return this},navigate:function(t,e){a.history.navigate(t,e);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=h.result(this,"routes");var t,e=h.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(A,"\\$&").replace($,"(?:$1)?").replace(T,function(t,e){return e?t:"([^/]+)"}).replace(H,"(.*?)");return new RegExp("^"+t+"$")},_extractParameters:function(t,e){var i=t.exec(e).slice(1);return h.map(i,function(t){return t?decodeURIComponent(t):null})}});var I=a.History=function(){this.handlers=[];h.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var N=/^[#\/]|\s+$/g;var P=/^\/+|\/+$/g;var O=/msie [\w.]+/;var C=/\/$/;I.started=false;h.extend(I.prototype,o,{interval:50,getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=this.location.pathname;var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.substr(i.length)}else{t=this.getHash()}}return t.replace(N,"")},start:function(t){if(I.started)throw new Error("Backbone.history has already been started");I.started=true;this.options=h.extend({},{root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var e=this.getFragment();var i=document.documentMode;var r=O.exec(navigator.userAgent.toLowerCase())&&(!i||i<=7);this.root=("/"+this.root+"/").replace(P,"/");if(r&&this._wantsHashChange){this.iframe=a.$('