feat(planning): grille hebdomadaire complète avec API et filtres

- Connexion API via proxy Angular (résolution CORS, base path /api)
- Import CSS ng-zorro global pour les modales et composants
- Filtres Camion/Show câblés sur l'affichage de la grille
- Camions affichés via TrucksService (linkés au show du même créneau)
- Panneau de détails : spectacles + camions du jour sélectionné
- Modale de création de spectacle stylisée avec fond et centrage
- Positionnement précis des events à la minute dans leur créneau
- Auto-scroll vers l'heure courante au chargement
- Ligne "maintenant" sur la colonne du jour actuel
- Régénération des services OpenAPI (nouveaux noms de types)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 20:36:03 +02:00
parent 150b97cd2e
commit 654b297e2e
3131 changed files with 149304 additions and 104334 deletions
-4
View File
@@ -28,10 +28,6 @@ function isMetadataKind(value) {
* are common for all TUF metadata types (roles).
*/
class Signed {
specVersion;
expires;
version;
unrecognizedFields;
constructor(options) {
this.specVersion = options.specVersion || SPECIFICATION_VERSION.join('.');
const specList = this.specVersion.split('.');
-4
View File
@@ -16,10 +16,6 @@ const utils_1 = require("./utils");
* describing targets with designated pathnames and/or further delegations.
*/
class Delegations {
keys;
roles;
unrecognizedFields;
succinctRoles;
constructor(options) {
this.keys = options.keys;
this.unrecognizedFields = options.unrecognizedFields || {};
-8
View File
@@ -12,10 +12,6 @@ const utils_1 = require("./utils");
//
// This class is used for Timestamp and Snapshot metadata.
class MetaFile {
version;
length;
hashes;
unrecognizedFields;
constructor(opts) {
if (opts.version <= 0) {
throw new error_1.ValueError('Metafile version must be at least 1');
@@ -98,10 +94,6 @@ exports.MetaFile = MetaFile;
//
// This class is used for Target metadata.
class TargetFile {
length;
path;
hashes;
unrecognizedFields;
constructor(opts) {
validateLength(opts.length);
this.length = opts.length;
-5
View File
@@ -10,11 +10,6 @@ const utils_1 = require("./utils");
const key_1 = require("./utils/key");
// A container class representing the public portion of a Key.
class Key {
keyID;
keyType;
scheme;
keyVal;
unrecognizedFields;
constructor(options) {
const { keyID, keyType, scheme, keyVal, unrecognizedFields } = options;
this.keyID = keyID;
+1 -6
View File
@@ -39,9 +39,6 @@ const utils_1 = require("./utils");
* reasonable default values for new metadata.
*/
class Metadata {
signed;
signatures;
unrecognizedFields;
constructor(signed, signatures, unrecognizedFields) {
this.signed = signed;
this.signatures = signatures || {};
@@ -106,9 +103,7 @@ class Metadata {
if (!(other instanceof Metadata)) {
return false;
}
return (
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
this.signed.equals(other.signed) &&
return (this.signed.equals(other.signed) &&
util_1.default.isDeepStrictEqual(this.signatures, other.signatures) &&
util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
}
-11
View File
@@ -22,9 +22,6 @@ exports.TOP_LEVEL_ROLE_NAMES = [
* metadata, and which keys are accepted.
*/
class Role {
keyIDs;
threshold;
unrecognizedFields;
constructor(options) {
const { keyIDs, threshold, unrecognizedFields } = options;
if (hasDuplicates(keyIDs)) {
@@ -83,10 +80,6 @@ function hasDuplicates(array) {
* set, at least one of them must be set.
*/
class DelegatedRole extends Role {
name;
terminating;
paths;
pathHashPrefixes;
constructor(opts) {
super(opts);
const { name, terminating, paths, pathHashPrefixes } = opts;
@@ -194,10 +187,6 @@ function isTargetInPathPattern(target, pattern) {
* For details: https://github.com/theupdateframework/taps/blob/master/tap15.md
*/
class SuccinctRoles extends Role {
bitLength;
namePrefix;
numberOfBins;
suffixLen;
constructor(opts) {
super(opts);
const { bitLength, namePrefix } = opts;
+1 -4
View File
@@ -17,12 +17,9 @@ const utils_1 = require("./utils");
* This role specifies trusted keys for all other top-level roles, which may further delegate trust.
*/
class Root extends base_1.Signed {
type = base_1.MetadataKind.Root;
keys;
roles;
consistentSnapshot;
constructor(options) {
super(options);
this.type = base_1.MetadataKind.Root;
this.keys = options.keys || {};
this.consistentSnapshot = options.consistentSnapshot ?? true;
if (!options.roles) {
-2
View File
@@ -10,8 +10,6 @@ exports.Signature = void 0;
* Provide a `fromJSON` method to create a Signature from a JSON object.
*/
class Signature {
keyID;
sig;
constructor(options) {
const { keyID, sig } = options;
this.keyID = keyID;
+1 -2
View File
@@ -16,10 +16,9 @@ const utils_1 = require("./utils");
* and hence the latest versions of all targets (including any dependencies between them) on the repository.
*/
class Snapshot extends base_1.Signed {
type = base_1.MetadataKind.Snapshot;
meta;
constructor(opts) {
super(opts);
this.type = base_1.MetadataKind.Snapshot;
this.meta = opts.meta || { 'targets.json': new file_1.MetaFile({ version: 1 }) };
}
equals(other) {
+1 -3
View File
@@ -14,11 +14,9 @@ const utils_1 = require("./utils");
// Targets contains verifying information about target files and also delegates
// responsible to other Targets roles.
class Targets extends base_1.Signed {
type = base_1.MetadataKind.Targets;
targets;
delegations;
constructor(options) {
super(options);
this.type = base_1.MetadataKind.Targets;
this.targets = options.targets || {};
this.delegations = options.delegations;
}
+1 -2
View File
@@ -11,10 +11,9 @@ const utils_1 = require("./utils");
* and hence the latest versions of all metadata and targets on the repository.
*/
class Timestamp extends base_1.Signed {
type = base_1.MetadataKind.Timestamp;
snapshotMeta;
constructor(options) {
super(options);
this.type = base_1.MetadataKind.Timestamp;
this.snapshotMeta = options.snapshotMeta || new file_1.MetaFile({ version: 1 });
}
equals(other) {
+1 -1
View File
@@ -1,3 +1,3 @@
export * as guard from './guard';
export { JSONObject, JSONValue } from './types';
export * as crypto from './verify';
export type { JSONObject, JSONValue } from './types';
+7 -17
View File
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.crypto = exports.guard = void 0;
exports.guard = __importStar(require("./guard"));
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@tufjs/models",
"version": "4.1.0",
"version": "3.0.1",
"description": "TUF metadata models",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -8,8 +8,8 @@
"dist"
],
"scripts": {
"build": "tsc --build tsconfig.build.json",
"clean": "rm -rf dist && rm tsconfig.build.tsbuildinfo",
"build": "tsc --build",
"clean": "rm -rf dist && rm tsconfig.tsbuildinfo",
"test": "jest"
},
"repository": {
@@ -29,9 +29,9 @@
"homepage": "https://github.com/theupdateframework/tuf-js/tree/main/packages/models#readme",
"dependencies": {
"@tufjs/canonical-json": "2.0.0",
"minimatch": "^10.1.1"
"minimatch": "^9.0.5"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
"node": "^18.17.0 || >=20.5.0"
}
}