odoro 0.1.0
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.
- package/LICENSE +12 -0
- package/client.d.ts +84 -0
- package/dist/build-SNTGJH2J.js +4 -0
- package/dist/chunk-2YDI5NKV.js +55 -0
- package/dist/chunk-G2WW7N4C.js +1872 -0
- package/dist/chunk-G5QXVBYT.js +1139 -0
- package/dist/chunk-JMEHF3KN.js +35 -0
- package/dist/chunk-PEMYUK2D.js +64 -0
- package/dist/chunk-T42X2NJN.js +98 -0
- package/dist/chunk-T6RLHSCW.js +123 -0
- package/dist/chunk-UGRSODHU.js +154 -0
- package/dist/cli.d.ts +40 -0
- package/dist/cli.js +236 -0
- package/dist/commands-FVAHVVVN.js +793 -0
- package/dist/commands-V44Y5G4F.js +245 -0
- package/dist/create-SH2M722Y.js +288 -0
- package/dist/index.d.ts +354 -0
- package/dist/index.js +7 -0
- package/dist/package-AUINPBEX.js +62 -0
- package/dist/preview-LOAO5Y6V.js +3 -0
- package/dist/registry/index.d.ts +316 -0
- package/dist/registry/index.js +2 -0
- package/dist/server-MZ76LPAG.js +3 -0
- package/package.json +57 -0
- package/templates/react-ts/README.md +52 -0
- package/templates/react-ts/_gitignore +8 -0
- package/templates/react-ts/index.html +13 -0
- package/templates/react-ts/odoro.config.ts +10 -0
- package/templates/react-ts/package.json +23 -0
- package/templates/react-ts/public/favicon.svg +4 -0
- package/templates/react-ts/src/App.tsx +66 -0
- package/templates/react-ts/src/main.tsx +18 -0
- package/templates/react-ts/src/odoro-env.d.ts +1 -0
- package/templates/react-ts/src/routes/About.tsx +19 -0
- package/templates/react-ts/src/routes/Home.tsx +80 -0
- package/templates/react-ts/src/routes/NotFound.tsx +14 -0
- package/templates/react-ts/src/styles.css +13 -0
- package/templates/react-ts/tsconfig.json +25 -0
- package/templates/react-ts-server/Dockerfile +51 -0
- package/templates/react-ts-server/README.md +87 -0
- package/templates/react-ts-server/_dockerignore +8 -0
- package/templates/react-ts-server/_env.example +78 -0
- package/templates/react-ts-server/_gitignore +8 -0
- package/templates/react-ts-server/client/index.html +13 -0
- package/templates/react-ts-server/client/public/favicon.svg +4 -0
- package/templates/react-ts-server/client/src/App.tsx +66 -0
- package/templates/react-ts-server/client/src/main.tsx +18 -0
- package/templates/react-ts-server/client/src/odoro-env.d.ts +1 -0
- package/templates/react-ts-server/client/src/routes/About.tsx +19 -0
- package/templates/react-ts-server/client/src/routes/Home.tsx +148 -0
- package/templates/react-ts-server/client/src/routes/NotFound.tsx +14 -0
- package/templates/react-ts-server/client/src/styles.css +13 -0
- package/templates/react-ts-server/odoro.config.ts +21 -0
- package/templates/react-ts-server/package.json +33 -0
- package/templates/react-ts-server/scripts/dev.mjs +74 -0
- package/templates/react-ts-server/server/src/main.ts +131 -0
- package/templates/react-ts-server/server/src/modules/health/index.ts +144 -0
- package/templates/react-ts-server/server/tsconfig.json +23 -0
- package/templates/react-ts-server/tsconfig.json +27 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration du moteur Odoro.
|
|
3
|
+
*
|
|
4
|
+
* Le fichier `odoro.config.ts` est compile a la volee puis importe : il peut
|
|
5
|
+
* donc etre ecrit en TypeScript et utiliser toute la puissance du langage,
|
|
6
|
+
* sans etape de build prealable.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** Reglages du serveur de developpement. */
|
|
11
|
+
interface ServerConfig {
|
|
12
|
+
/** Port d'ecoute. @defaultValue 5180 */
|
|
13
|
+
port?: number;
|
|
14
|
+
/** Interface d'ecoute. @defaultValue 'localhost' */
|
|
15
|
+
host?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Redirections de requetes, du prefixe de chemin vers l'origine cible.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* { '/api': 'http://localhost:3001' }
|
|
21
|
+
*/
|
|
22
|
+
proxy?: Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
/** Reglages de la compilation de production. */
|
|
25
|
+
interface BuildConfig {
|
|
26
|
+
/** Dossier de sortie, relatif a la racine. @defaultValue 'dist' */
|
|
27
|
+
outDir?: string;
|
|
28
|
+
/** Minifie le code produit. @defaultValue true */
|
|
29
|
+
minify?: boolean;
|
|
30
|
+
/** Emet des cartes de source. @defaultValue true */
|
|
31
|
+
sourcemap?: boolean;
|
|
32
|
+
/** Cible de compilation. @defaultValue 'es2022' */
|
|
33
|
+
target?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Configuration d'un projet Odoro. */
|
|
36
|
+
interface OdoroConfig {
|
|
37
|
+
/** Racine du projet. @defaultValue le dossier courant */
|
|
38
|
+
root?: string;
|
|
39
|
+
/** Prefixe des URL publiques. @defaultValue '/' */
|
|
40
|
+
base?: string;
|
|
41
|
+
/** Dossier des fichiers copies tels quels. @defaultValue 'public' */
|
|
42
|
+
publicDir?: string;
|
|
43
|
+
/** Reglages du serveur de developpement. */
|
|
44
|
+
server?: ServerConfig;
|
|
45
|
+
/** Reglages de la compilation de production. */
|
|
46
|
+
build?: BuildConfig;
|
|
47
|
+
/**
|
|
48
|
+
* Alias de chemins d'import, du prefixe vers un chemin relatif a la racine.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* { '@': 'src' }
|
|
52
|
+
*/
|
|
53
|
+
alias?: Record<string, string>;
|
|
54
|
+
/** Remplacements textuels appliques a la compilation. */
|
|
55
|
+
define?: Record<string, string>;
|
|
56
|
+
/**
|
|
57
|
+
* Prefixe des variables d'environnement exposees au client via
|
|
58
|
+
* `import.meta.env`.
|
|
59
|
+
*
|
|
60
|
+
* @defaultValue 'ODORO_'
|
|
61
|
+
*/
|
|
62
|
+
envPrefix?: string;
|
|
63
|
+
}
|
|
64
|
+
/** Configuration une fois les valeurs par defaut appliquees. */
|
|
65
|
+
interface ResolvedConfig {
|
|
66
|
+
readonly root: string;
|
|
67
|
+
readonly base: string;
|
|
68
|
+
readonly publicDir: string;
|
|
69
|
+
readonly outDir: string;
|
|
70
|
+
readonly server: Required<Omit<ServerConfig, 'proxy'>> & {
|
|
71
|
+
proxy: Record<string, string>;
|
|
72
|
+
};
|
|
73
|
+
readonly build: Required<BuildConfig>;
|
|
74
|
+
readonly alias: Record<string, string>;
|
|
75
|
+
readonly define: Record<string, string>;
|
|
76
|
+
readonly envPrefix: string;
|
|
77
|
+
/** Chemin du fichier de configuration effectivement charge, s'il existe. */
|
|
78
|
+
readonly configFile: string | undefined;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Identite sur la configuration, presente uniquement pour le typage et
|
|
82
|
+
* l'autocompletion dans `odoro.config.ts`.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* import { defineConfig } from 'odoro'
|
|
86
|
+
*
|
|
87
|
+
* export default defineConfig({
|
|
88
|
+
* server: { port: 3000, proxy: { '/api': 'http://localhost:3001' } },
|
|
89
|
+
* })
|
|
90
|
+
*/
|
|
91
|
+
declare function defineConfig(config: OdoroConfig): OdoroConfig;
|
|
92
|
+
/**
|
|
93
|
+
* Charge la configuration d'un projet et applique les valeurs par defaut.
|
|
94
|
+
*
|
|
95
|
+
* @param root Racine du projet.
|
|
96
|
+
* @param overrides Reglages issus de la ligne de commande, prioritaires.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* const config = await loadConfig(process.cwd(), { server: { port: 4000 } })
|
|
100
|
+
*/
|
|
101
|
+
declare function loadConfig(root: string, overrides?: OdoroConfig): Promise<ResolvedConfig>;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Serveur de developpement.
|
|
105
|
+
*
|
|
106
|
+
* Aucune compilation prealable : le navigateur demande les modules un a un,
|
|
107
|
+
* en modules natifs, et chacun est compile a la demande puis mis en cache.
|
|
108
|
+
* Le temps de demarrage ne depend donc pas de la taille du projet, seulement
|
|
109
|
+
* de la profondeur du premier ecran.
|
|
110
|
+
*
|
|
111
|
+
* @module
|
|
112
|
+
*/
|
|
113
|
+
|
|
114
|
+
/** Serveur de developpement en cours d'execution. */
|
|
115
|
+
interface DevServer {
|
|
116
|
+
/** Adresse a ouvrir dans un navigateur. */
|
|
117
|
+
readonly url: string;
|
|
118
|
+
/** Arrete le serveur et libere les ressources. */
|
|
119
|
+
close(): Promise<void>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Demarre le serveur de developpement.
|
|
123
|
+
*
|
|
124
|
+
* @param config Configuration resolue du projet.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* const server = await startDevServer(await loadConfig(process.cwd()))
|
|
128
|
+
* console.log(server.url)
|
|
129
|
+
*/
|
|
130
|
+
declare function startDevServer(config: ResolvedConfig): Promise<DevServer>;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Compilation de production.
|
|
134
|
+
*
|
|
135
|
+
* Le document HTML est le point de depart : ses balises de script en modules
|
|
136
|
+
* designent les entrees, et il est reecrit a la fin pour pointer vers les
|
|
137
|
+
* fichiers empreintes.
|
|
138
|
+
*
|
|
139
|
+
* @module
|
|
140
|
+
*/
|
|
141
|
+
|
|
142
|
+
/** Un fichier produit par la compilation. */
|
|
143
|
+
interface BuiltFile {
|
|
144
|
+
/** Chemin relatif au dossier de sortie. */
|
|
145
|
+
readonly path: string;
|
|
146
|
+
/** Taille en octets. */
|
|
147
|
+
readonly bytes: number;
|
|
148
|
+
}
|
|
149
|
+
/** Resultat d'une compilation de production. */
|
|
150
|
+
interface BuildOutput {
|
|
151
|
+
/** Dossier de sortie. */
|
|
152
|
+
readonly outDir: string;
|
|
153
|
+
/** Fichiers produits, du plus gros au plus petit. */
|
|
154
|
+
readonly files: readonly BuiltFile[];
|
|
155
|
+
/** Duree totale, en millisecondes. */
|
|
156
|
+
readonly elapsed: number;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Compile un projet pour la production.
|
|
160
|
+
*
|
|
161
|
+
* @param config Configuration resolue du projet.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* const output = await buildProject(await loadConfig(process.cwd()))
|
|
165
|
+
*/
|
|
166
|
+
declare function buildProject(config: ResolvedConfig): Promise<BuildOutput>;
|
|
167
|
+
/** Affiche le recapitulatif d'une compilation. */
|
|
168
|
+
declare function reportBuild(output: BuildOutput, root: string): void;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Serveur de previsualisation du build de production.
|
|
172
|
+
*
|
|
173
|
+
* Il ne compile rien : il sert le dossier de sortie tel quel, avec le meme
|
|
174
|
+
* repli d'application monopage qu'un hebergeur statique. C'est le dernier
|
|
175
|
+
* filet avant un deploiement.
|
|
176
|
+
*
|
|
177
|
+
* @module
|
|
178
|
+
*/
|
|
179
|
+
|
|
180
|
+
/** Serveur de previsualisation en cours d'execution. */
|
|
181
|
+
interface PreviewServer {
|
|
182
|
+
/** Adresse a ouvrir dans un navigateur. */
|
|
183
|
+
readonly url: string;
|
|
184
|
+
/** Arrete le serveur. */
|
|
185
|
+
close(): Promise<void>;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Demarre le serveur de previsualisation.
|
|
189
|
+
*
|
|
190
|
+
* @param config Configuration resolue du projet.
|
|
191
|
+
* @param port Port d'ecoute. Par defaut, celui du serveur de developpement
|
|
192
|
+
* augmente de un, pour pouvoir faire tourner les deux.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* const preview = await startPreviewServer(config)
|
|
196
|
+
*/
|
|
197
|
+
declare function startPreviewServer(config: ResolvedConfig, port?: number): Promise<PreviewServer>;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Graphe des modules servis.
|
|
201
|
+
*
|
|
202
|
+
* Il repond a une seule question, mais la plus importante du developpement a
|
|
203
|
+
* chaud : quand ce fichier change, que faut-il recharger ?
|
|
204
|
+
*
|
|
205
|
+
* @module
|
|
206
|
+
*/
|
|
207
|
+
/** Un module connu du serveur. */
|
|
208
|
+
interface ModuleNode {
|
|
209
|
+
/** Chemin absolu du fichier. */
|
|
210
|
+
readonly file: string;
|
|
211
|
+
/** URL sous laquelle le module est servi. */
|
|
212
|
+
readonly url: string;
|
|
213
|
+
/** Modules qui importent celui-ci. */
|
|
214
|
+
readonly importers: Set<string>;
|
|
215
|
+
/** Modules importes par celui-ci. */
|
|
216
|
+
readonly imported: Set<string>;
|
|
217
|
+
/**
|
|
218
|
+
* `true` si le module declare accepter ses propres mises a jour via
|
|
219
|
+
* `import.meta.hot.accept()`.
|
|
220
|
+
*/
|
|
221
|
+
selfAccepting: boolean;
|
|
222
|
+
/** Code transforme, ou `undefined` si le module doit etre recompile. */
|
|
223
|
+
code: string | undefined;
|
|
224
|
+
/** Horodatage de la derniere invalidation, servant a casser le cache. */
|
|
225
|
+
timestamp: number;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Detecte si une source declare accepter ses propres mises a jour.
|
|
229
|
+
*
|
|
230
|
+
* L'analyse est volontairement textuelle. Une analyse syntaxique complete
|
|
231
|
+
* serait plus sure, mais `import.meta.hot.accept` est une formule trop
|
|
232
|
+
* distinctive pour apparaitre par accident, et le cout d'un faux positif se
|
|
233
|
+
* limite a une mise a jour la ou un rechargement aurait suffi.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* detectSelfAccepting('import.meta.hot?.accept()') // true
|
|
237
|
+
*/
|
|
238
|
+
declare function detectSelfAccepting(source: string): boolean;
|
|
239
|
+
/** Graphe des modules et de leurs relations d'import. */
|
|
240
|
+
declare class ModuleGraph {
|
|
241
|
+
private readonly nodes;
|
|
242
|
+
/** Recupere un module, ou le cree s'il est inconnu. */
|
|
243
|
+
ensure(file: string, url: string): ModuleNode;
|
|
244
|
+
/** Recupere un module deja connu. */
|
|
245
|
+
get(file: string): ModuleNode | undefined;
|
|
246
|
+
/** Nombre de modules connus. */
|
|
247
|
+
get size(): number;
|
|
248
|
+
/**
|
|
249
|
+
* Remplace la liste des dependances d'un module, en tenant a jour les
|
|
250
|
+
* relations inverses.
|
|
251
|
+
*/
|
|
252
|
+
setDependencies(file: string, dependencies: readonly string[]): void;
|
|
253
|
+
/**
|
|
254
|
+
* Invalide un module et remonte la chaine de ses importateurs jusqu'a
|
|
255
|
+
* trouver, sur chaque branche, un module qui accepte les mises a jour.
|
|
256
|
+
*
|
|
257
|
+
* @returns Les modules a recharger cote client. Un tableau vide signifie
|
|
258
|
+
* qu'aucune frontiere n'accepte la mise a jour : il faut recharger la page.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* const boundaries = graph.invalidate('/projet/src/App.css')
|
|
262
|
+
*/
|
|
263
|
+
invalidate(file: string): ModuleNode[];
|
|
264
|
+
/** Oublie tous les modules. */
|
|
265
|
+
clear(): void;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Transformation des modules servis en developpement.
|
|
270
|
+
*
|
|
271
|
+
* Le navigateur ne sait lire ni TypeScript, ni JSX, ni les specificateurs
|
|
272
|
+
* d'import nus (`import React from 'react'`). Chaque module demande est donc
|
|
273
|
+
* compile a la volee et ses imports sont reecrits en URL que le serveur sait
|
|
274
|
+
* resoudre.
|
|
275
|
+
*
|
|
276
|
+
* La reecriture n'est pas faite a coups d'expressions regulieres — une chaine
|
|
277
|
+
* de caracteres contenant le mot `import` suffirait a la mettre en defaut.
|
|
278
|
+
* On s'appuie sur le resolveur du compilateur lui-meme : chaque import est
|
|
279
|
+
* resolu puis **marque externe**, de sorte que rien n'est inline mais que tous
|
|
280
|
+
* les chemins ressortent reecrits, avec la meme exactitude qu'une compilation
|
|
281
|
+
* complete.
|
|
282
|
+
*
|
|
283
|
+
* @module
|
|
284
|
+
*/
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Nom de fichier compile correspondant a un specificateur de dependance.
|
|
288
|
+
*
|
|
289
|
+
* Le nom est **aplati** : c'est ce qui rend l'URL servie exempte de segment de
|
|
290
|
+
* dossier. Un module servi sous `/@deps/react-dom/client` resoudrait son propre
|
|
291
|
+
* `import './chunk-X.js'` en `/@deps/react-dom/chunk-X.js`, alors que le
|
|
292
|
+
* fragment est depose a la racine du cache.
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* depFileName('react-dom/client') // 'react-dom_client.js'
|
|
296
|
+
* depFileName('@scope/paquet') // 'scope_paquet.js'
|
|
297
|
+
*/
|
|
298
|
+
declare function depFileName(specifier: string): string;
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Pre-compilation des dependances.
|
|
302
|
+
*
|
|
303
|
+
* Deux raisons la rendent indispensable, et non optionnelle :
|
|
304
|
+
*
|
|
305
|
+
* 1. beaucoup de paquets ne sont encore distribues qu'en modules CommonJS, que
|
|
306
|
+
* le navigateur ne sait pas charger ;
|
|
307
|
+
* 2. une dependance eclatee en centaines de petits fichiers declencherait
|
|
308
|
+
* autant de requetes au premier chargement.
|
|
309
|
+
*
|
|
310
|
+
* Le piege, lui, est ailleurs : si `react` et `react-dom/client` etaient
|
|
311
|
+
* compiles separement, chacun embarquerait sa copie de React. Deux instances
|
|
312
|
+
* de React dans une meme page cassent les hooks et les contextes, avec des
|
|
313
|
+
* symptomes deroutants. Tous les specificateurs sont donc **compiles en une
|
|
314
|
+
* seule passe**, avec decoupage : le code commun se retrouve dans un fragment
|
|
315
|
+
* partage, et l'instance reste unique.
|
|
316
|
+
*
|
|
317
|
+
* @module
|
|
318
|
+
*/
|
|
319
|
+
|
|
320
|
+
/** Resultat de la pre-compilation. */
|
|
321
|
+
interface OptimizedDeps {
|
|
322
|
+
/** Dossier contenant les modules compiles. */
|
|
323
|
+
readonly directory: string;
|
|
324
|
+
/** Specificateurs disponibles. */
|
|
325
|
+
readonly specifiers: readonly string[];
|
|
326
|
+
/** `true` si une compilation a reellement eu lieu. */
|
|
327
|
+
readonly rebuilt: boolean;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Parcourt le code du projet a la recherche des dependances reellement
|
|
331
|
+
* importees, transitivement.
|
|
332
|
+
*
|
|
333
|
+
* Se fonder sur le champ `dependencies` du manifeste ne suffirait pas : une
|
|
334
|
+
* application importe `react-dom/client`, jamais `react-dom` tout court.
|
|
335
|
+
*
|
|
336
|
+
* @param entries Points d'entree du projet, en chemins absolus.
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* const specifiers = await scanDependencies(config, ['/projet/src/main.tsx'])
|
|
340
|
+
*/
|
|
341
|
+
declare function scanDependencies(config: ResolvedConfig, entries: readonly string[]): Promise<string[]>;
|
|
342
|
+
/**
|
|
343
|
+
* Compile un ensemble de specificateurs en une seule passe.
|
|
344
|
+
*
|
|
345
|
+
* @param config Configuration resolue du projet.
|
|
346
|
+
* @param specifiers Specificateurs a compiler.
|
|
347
|
+
* @param force Recompile meme si le cache semble valide.
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* const deps = await optimizeDeps(config, ['react', 'react-dom/client'])
|
|
351
|
+
*/
|
|
352
|
+
declare function optimizeDeps(config: ResolvedConfig, specifiers: readonly string[], force?: boolean): Promise<OptimizedDeps>;
|
|
353
|
+
|
|
354
|
+
export { type BuildConfig, type BuildOutput, type BuiltFile, type DevServer, ModuleGraph, type ModuleNode, type OdoroConfig, type OptimizedDeps, type PreviewServer, type ResolvedConfig, type ServerConfig, buildProject, defineConfig, depFileName, detectSelfAccepting, loadConfig, optimizeDeps, reportBuild, scanDependencies, startDevServer, startPreviewServer };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export { defineConfig, loadConfig } from './chunk-T42X2NJN.js';
|
|
3
|
+
import './chunk-T6RLHSCW.js';
|
|
4
|
+
export { buildProject, reportBuild } from './chunk-UGRSODHU.js';
|
|
5
|
+
export { ModuleGraph, depFileName, detectSelfAccepting, optimizeDeps, scanDependencies, startDevServer } from './chunk-G5QXVBYT.js';
|
|
6
|
+
export { startPreviewServer } from './chunk-2YDI5NKV.js';
|
|
7
|
+
import './chunk-JMEHF3KN.js';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// package.json
|
|
3
|
+
var package_default = {
|
|
4
|
+
name: "odoro",
|
|
5
|
+
version: "0.1.0",
|
|
6
|
+
type: "module",
|
|
7
|
+
license: "UNLICENSED",
|
|
8
|
+
author: "BouBouw",
|
|
9
|
+
description: "Moteur de developpement et echafaudage Odoro : odoro create, dev, build, preview.",
|
|
10
|
+
engines: {
|
|
11
|
+
node: ">=20"
|
|
12
|
+
},
|
|
13
|
+
bin: {
|
|
14
|
+
odoro: "./dist/cli.js"
|
|
15
|
+
},
|
|
16
|
+
files: [
|
|
17
|
+
"dist",
|
|
18
|
+
"templates",
|
|
19
|
+
"client.d.ts"
|
|
20
|
+
],
|
|
21
|
+
exports: {
|
|
22
|
+
".": {
|
|
23
|
+
types: "./dist/index.d.ts",
|
|
24
|
+
import: "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./package.json": "./package.json",
|
|
27
|
+
"./client": {
|
|
28
|
+
types: "./client.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./cli": {
|
|
31
|
+
types: "./dist/cli.d.ts",
|
|
32
|
+
import: "./dist/cli.js"
|
|
33
|
+
},
|
|
34
|
+
"./registry": {
|
|
35
|
+
types: "./dist/registry/index.d.ts",
|
|
36
|
+
import: "./dist/registry/index.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
scripts: {
|
|
40
|
+
build: "tsup",
|
|
41
|
+
dev: "tsup --watch",
|
|
42
|
+
test: "vitest run",
|
|
43
|
+
typecheck: "tsc --noEmit",
|
|
44
|
+
prepublishOnly: "pnpm run build"
|
|
45
|
+
},
|
|
46
|
+
dependencies: {
|
|
47
|
+
"@babel/core": "^8.0.1",
|
|
48
|
+
"@clack/prompts": "^0.11.0",
|
|
49
|
+
esbuild: "^0.28.2",
|
|
50
|
+
picocolors: "^1.1.1",
|
|
51
|
+
"react-refresh": "^0.18.0"
|
|
52
|
+
},
|
|
53
|
+
devDependencies: {
|
|
54
|
+
"@types/node": "^22.18.8",
|
|
55
|
+
tsup: "^8.5.0",
|
|
56
|
+
typescript: "^5.9.3",
|
|
57
|
+
vitest: "^3.2.4",
|
|
58
|
+
zod: "^4.5.1"
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { package_default as default };
|