upload_d_n_d 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/docs/CHANGELOG.md +8 -0
- data/lib/tasks/upload_d_n_d_tasks.rake +9 -4
- data/lib/upload_d_n_d/js_link.rb +62 -0
- data/lib/upload_d_n_d/version.rb +1 -1
- data/lib/upload_d_n_d.rb +1 -0
- data/package.json +19 -0
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5c93f26a694496d5e6582aaeb7d7d2f723b58fd1684de65da9e6870f099d04b0
|
|
4
|
+
data.tar.gz: e23c03f1241c7f9488696230c73ebe56e0cf90cebebadaff5c4b76c40d9b77f3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5f0b4d1593e58c8f0ebec99a3828f5f5754bf38bf3f3e0d8540b6b1f0b3034a23e6667a68a4f0dbb6a37f074bc258764af46c60a3232c19056bd4dc9333edc2f
|
|
7
|
+
data.tar.gz: 2fe89e1d9d7d865a309d90e3ec4b80e9bbdb68d12edc0b2848de55c61d58d7a663d0cdc1b87de600242d5ece0e62cc16b2c27a775123efdd4ae102e10b4360fb
|
data/docs/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.3] - 2026-10-29
|
|
11
|
+
|
|
12
|
+
Correctifs d'empaquetage pour la consommation de la gem via jsbundling (bun/esbuild) et Tailwind. Patch, sans changement d'API.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **Paquet publié : `package.json` manquant** — la liste de fichiers du gemspec n'incluait pas `package.json`, absent de la gem publiée. Les apps qui compilent leurs assets avec jsbundling (bun/esbuild) et Tailwind ne pouvaient plus résoudre `import "upload_d_n_d"` ni `@import "upload_d_n_d/styles"` via `node_modules/upload_d_n_d` (« Could not resolve "upload_d_n_d" », « Can't resolve 'upload_d_n_d/styles' »). `package.json` est désormais embarqué ; un test construit la gem (`gem build`) et vérifie sa présence ainsi que celle des fichiers déclarés dans ses `exports`.
|
|
16
|
+
- **`upload_d_n_d:link_js` ne mettait pas le lien à jour** — la tâche ne (re)créait le lien `node_modules/upload_d_n_d` que lorsqu'il était absent (`exist?` suit le lien). Lors d'une montée de version, l'ancien lien vers la copie précédente de la gem était conservé ; si l'ancienne cible avait disparu, le lien cassé faisait échouer `ln_s` (lien déjà présent). La tâche compare désormais la cible **résolue** du lien au répertoire de la gem courante (résolution des deux chemins, pour qu'un chemin relatif ou un lien intermédiaire ne déclenche pas un remplacement inutile) et le remplace s'il diffère ou est cassé. Un vrai dossier ou fichier à cet emplacement (ex. paquet installé par npm) n'est **jamais** supprimé : la tâche avertit et le laisse en place. Logique extraite dans `UploadDND::JsLink`, idempotente.
|
|
17
|
+
|
|
10
18
|
## [0.9.2] - 2026-10-29
|
|
11
19
|
|
|
12
20
|
Reconnaissance des formats `.ods`/`.heic`/`.heif` et affichage des extensions (au lieu des types MIME bruts) sous la zone de dépôt. Patch, sans changement d'API.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "upload_d_n_d/js_link"
|
|
2
|
+
|
|
1
3
|
namespace :upload_d_n_d do
|
|
2
4
|
desc "Link gem JS into node_modules for jsbundling compatibility"
|
|
3
5
|
task :link_js do
|
|
@@ -7,10 +9,13 @@ namespace :upload_d_n_d do
|
|
|
7
9
|
gem_path = gem_spec.gem_dir
|
|
8
10
|
link_path = Rails.root.join("node_modules", "upload_d_n_d")
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
case UploadDND::JsLink.reconcile(link_path: link_path, target: gem_path)
|
|
13
|
+
when :created then puts "upload_d_n_d: linked JS #{link_path} → #{gem_path}"
|
|
14
|
+
when :updated then puts "upload_d_n_d: relinked JS #{link_path} → #{gem_path}"
|
|
15
|
+
when :conflict
|
|
16
|
+
warn "upload_d_n_d: #{link_path} existe et n'est pas un lien géré par la gem ; " \
|
|
17
|
+
"laissé tel quel (rien supprimé). Retirez-le pour permettre à " \
|
|
18
|
+
"`rake upload_d_n_d:link_js` de créer le lien vers #{gem_path}."
|
|
14
19
|
end
|
|
15
20
|
end
|
|
16
21
|
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "fileutils"
|
|
4
|
+
|
|
5
|
+
module UploadDND
|
|
6
|
+
# Réconcilie le lien symbolique `node_modules/upload_d_n_d` utilisé par
|
|
7
|
+
# jsbundling (bun/esbuild) et Tailwind pour résoudre `upload_d_n_d` et
|
|
8
|
+
# `upload_d_n_d/styles` depuis le paquet de la gem.
|
|
9
|
+
#
|
|
10
|
+
# Idempotent, et corrige deux cas que la simple présence du lien masquait :
|
|
11
|
+
# un lien périmé pointant vers une version précédente de la gem (montée de
|
|
12
|
+
# version), et un lien cassé dont la cible a disparu (où `ln_s` échouerait,
|
|
13
|
+
# le lien existant déjà).
|
|
14
|
+
#
|
|
15
|
+
# Ne gère que les liens symboliques. Un vrai dossier ou fichier à cet
|
|
16
|
+
# emplacement (par ex. un paquet installé par npm) n'est jamais supprimé ni
|
|
17
|
+
# écrasé : la méthode signale un conflit (`:conflict`) et laisse l'appelant
|
|
18
|
+
# avertir.
|
|
19
|
+
module JsLink
|
|
20
|
+
module_function
|
|
21
|
+
|
|
22
|
+
# Crée ou met à jour le lien `link_path` vers `target`.
|
|
23
|
+
#
|
|
24
|
+
# @param link_path [String, Pathname] emplacement du lien (node_modules/upload_d_n_d)
|
|
25
|
+
# @param target [String, Pathname] répertoire cible (gem_dir de la gem courante)
|
|
26
|
+
# @return [Symbol] :created, :updated, :unchanged ou :conflict
|
|
27
|
+
def reconcile(link_path:, target:)
|
|
28
|
+
link = link_path.to_s
|
|
29
|
+
target = target.to_s
|
|
30
|
+
|
|
31
|
+
if File.symlink?(link)
|
|
32
|
+
return :unchanged if resolves_to?(link, target)
|
|
33
|
+
|
|
34
|
+
File.unlink(link) # lien périmé, cassé, ou pointant ailleurs
|
|
35
|
+
link!(link, target)
|
|
36
|
+
:updated
|
|
37
|
+
elsif File.exist?(link)
|
|
38
|
+
:conflict # vrai dossier/fichier (ex. installé par npm) : on n'y touche jamais
|
|
39
|
+
else
|
|
40
|
+
link!(link, target)
|
|
41
|
+
:created
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Confronte la cible réelle du lien au dossier de la gem, après résolution
|
|
46
|
+
# des deux chemins (chemin relatif, lien intermédiaire) : un lien qui pointe
|
|
47
|
+
# déjà vers la bonne gem par un chemin indirect n'est pas remplacé. Un lien
|
|
48
|
+
# cassé ne résout pas (ENOENT) et n'est donc jamais considéré comme à jour.
|
|
49
|
+
def resolves_to?(link, target)
|
|
50
|
+
File.realpath(link) == File.realpath(target)
|
|
51
|
+
rescue Errno::ENOENT
|
|
52
|
+
false
|
|
53
|
+
end
|
|
54
|
+
private_class_method :resolves_to?
|
|
55
|
+
|
|
56
|
+
def link!(link, target)
|
|
57
|
+
FileUtils.mkdir_p(File.dirname(link))
|
|
58
|
+
FileUtils.ln_s(target, link)
|
|
59
|
+
end
|
|
60
|
+
private_class_method :link!
|
|
61
|
+
end
|
|
62
|
+
end
|
data/lib/upload_d_n_d/version.rb
CHANGED
data/lib/upload_d_n_d.rb
CHANGED
|
@@ -9,6 +9,7 @@ require "upload_d_n_d/rejected_blob"
|
|
|
9
9
|
require "upload_d_n_d/orphan_blobs"
|
|
10
10
|
require "upload_d_n_d/file_validator"
|
|
11
11
|
require "upload_d_n_d/mime_types"
|
|
12
|
+
require "upload_d_n_d/js_link"
|
|
12
13
|
require "upload_d_n_d/uploadable"
|
|
13
14
|
require "upload_d_n_d/controllers/uploadable"
|
|
14
15
|
|
data/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "upload_d_n_d",
|
|
3
|
+
"version": "0.9.3",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "app/javascript/upload_d_n_d/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./app/javascript/upload_d_n_d/index.js",
|
|
8
|
+
"./controllers/*": "./app/javascript/upload_d_n_d/controllers/*.js",
|
|
9
|
+
"./styles": {
|
|
10
|
+
"style": "./app/assets/stylesheets/upload_d_n_d/application.css"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@rails/activestorage": "^7.2.3"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"@hotwired/stimulus": "^3.0.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: upload_d_n_d
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pierre Cherbero
|
|
@@ -116,12 +116,14 @@ files:
|
|
|
116
116
|
- lib/upload_d_n_d/field_constraints.rb
|
|
117
117
|
- lib/upload_d_n_d/field_reference.rb
|
|
118
118
|
- lib/upload_d_n_d/file_validator.rb
|
|
119
|
+
- lib/upload_d_n_d/js_link.rb
|
|
119
120
|
- lib/upload_d_n_d/mime_types.rb
|
|
120
121
|
- lib/upload_d_n_d/orphan_blobs.rb
|
|
121
122
|
- lib/upload_d_n_d/rejected_blob.rb
|
|
122
123
|
- lib/upload_d_n_d/session_id.rb
|
|
123
124
|
- lib/upload_d_n_d/uploadable.rb
|
|
124
125
|
- lib/upload_d_n_d/version.rb
|
|
126
|
+
- package.json
|
|
125
127
|
homepage: https://github.com/Peyochanchan/upload_d_n_d
|
|
126
128
|
licenses:
|
|
127
129
|
- MIT
|