diff --git a/.changeset/little-squids-hide.md b/.changeset/little-squids-hide.md new file mode 100644 index 0000000..2182985 --- /dev/null +++ b/.changeset/little-squids-hide.md @@ -0,0 +1,5 @@ +--- +"@betagouv/aides-velo": minor +--- + +Split the package in differents submodules (/rules and /data) diff --git a/README.md b/README.md index f789c59..ad9b383 100644 --- a/README.md +++ b/README.md @@ -86,11 +86,12 @@ engine ### Avec les règles Publicodes -Il est également possible d'utiliser les règles Publicodes directement. +Il est également possible d'utiliser les règles Publicodes directement avec +`@betagouv/aides-velo/rules`. ```typescript import Engine, { formatValue } from "publicodes"; -import { rules } from "@betagouv/aides-velo"; +import rules from "@betagouv/aides-velo/rules"; const engine = new Engine(rules); @@ -131,5 +132,3 @@ yarn run compile // Run the documentation server yarn run doc ``` - -## diff --git a/package.json b/package.json index f01e652..53a61ce 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,16 @@ "types": "./dist/src/index.d.ts", "require": "./dist/src/index.cjs", "import": "./dist/src/index.js" + }, + "./rules": { + "types": "./dist/publicodes-build/index.d.ts", + "require": "./dist/publicodes-build/index.cjs", + "import": "./dist/publicodes-build/index.js" + }, + "./data": { + "types": "./dist/src/data/index.d.ts", + "require": "./dist/src/data/index.cjs", + "import": "./dist/src/data/index.js" } }, "files": [ diff --git a/scripts/data-fetch/miniatures/aides-jeunes b/scripts/data-fetch/miniatures/aides-jeunes index 023395d..56da8db 160000 --- a/scripts/data-fetch/miniatures/aides-jeunes +++ b/scripts/data-fetch/miniatures/aides-jeunes @@ -1 +1 @@ -Subproject commit 023395d9dba2f543d2b1c46538a534051227076b +Subproject commit 56da8dbb47b3dfdfcbab3c0d1c814c8de4de7e1a diff --git a/src/index.ts b/src/index.ts index ef01113..c171d4a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,25 +6,9 @@ * wrapper functions, and the types. */ -// Export the compiled rules and the types. - -import compiledRules from "../publicodes-build"; +export type { Localisation, AideRuleNames } from "./data"; export type { Questions, RuleName, Situation } from "../publicodes-build"; -/** - * Publicodes rules compiled in a single JSON object. - */ -export const rules = compiledRules; - -// Export generated data - -export * as data from "./data"; -export type { AideRuleNames, Localisation } from "./data"; - -// Export the utils functions. export { slugify } from "./lib/utils"; - -// Export the AidesVeloEngine class and the Aide type. - export { AidesVeloEngine } from "./lib/AidesVeloEngine"; export type { Aide } from "./lib/AidesVeloEngine"; diff --git a/src/lib/AidesVeloEngine.ts b/src/lib/AidesVeloEngine.ts index a42f578..b1d6698 100644 --- a/src/lib/AidesVeloEngine.ts +++ b/src/lib/AidesVeloEngine.ts @@ -2,15 +2,13 @@ import Engine, { formatValue, Situation as PublicodesSituation, } from "publicodes"; +import rules, { Questions, RuleName, Situation } from "../../publicodes-build"; import { AideRuleNames, - data, + aidesAvecLocalisation, Localisation, - Questions, - RuleName, - Situation, - rules, -} from ".."; + miniatures, +} from "../data"; import { extractOptions } from "./utils"; /** @@ -45,7 +43,7 @@ export type Aide = { }; const aidesAvecLocalisationEntries = Object.entries( - data.aidesAvecLocalisation + aidesAvecLocalisation ) as readonly [AideRuleNames, Localisation][]; /** @@ -128,7 +126,7 @@ export class AidesVeloEngine { // the AST instead of the data object. And removing Luxembourg and // Monaco to avoid needing to import the whole // aides-collectivities.json file? - const collectivity = data.aidesAvecLocalisation[ruleName].collectivity; + const collectivity = aidesAvecLocalisation[ruleName].collectivity; return { id: ruleName, @@ -136,7 +134,7 @@ export class AidesVeloEngine { description: rule.rawNode.description, url: (rule.rawNode as any).lien, collectivity, - logo: data.miniatures[ruleName], + logo: miniatures[ruleName], }; }); } diff --git a/test/rules.test.ts b/test/rules.test.ts index 5a7d31f..8b9266f 100644 --- a/test/rules.test.ts +++ b/test/rules.test.ts @@ -1,7 +1,8 @@ import Engine, { Rule } from "publicodes"; import assert from "assert"; - -import { AideRuleNames, RuleName, data, rules } from "../src"; +import { AideRuleNames, RuleName } from "../src"; +import rules from "../publicodes-build"; +import { aidesAvecLocalisation, miniatures } from "../src/data"; describe("Aides Vélo", () => { const engine = new Engine(rules); @@ -34,7 +35,7 @@ describe("Aides Vélo", () => { !noNeedToAssociatesLoc.includes(key) ) { expect( - data.aidesAvecLocalisation[key as AideRuleNames] + aidesAvecLocalisation[key as AideRuleNames] ).not.toBeUndefined(); } }); @@ -49,10 +50,10 @@ describe("Aides Vélo", () => { key.split(" . ").length === 2 && !rulesToIgnore.includes(key) ) { - if (!data.miniatures[key as AideRuleNames]) { + if (!miniatures[key as AideRuleNames]) { console.log(key); } - expect(data.miniatures[key as AideRuleNames]).not.toBeUndefined(); + expect(miniatures[key as AideRuleNames]).not.toBeUndefined(); } }); }); diff --git a/tsconfig.json b/tsconfig.json index 32bc24b..4476a23 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,8 +12,7 @@ "strict": true }, "include": [ - "src/**/*.ts", - "build/*.js" + "src/**/*.ts" ], "exclude": [ "node_modules" diff --git a/tsup.config.ts b/tsup.config.ts index 0795e09..7497e14 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -12,6 +12,7 @@ export default defineConfig((options) => { clean: true, cjsInterop: true, splitting: true, + treeshake: true, minify: options.watch ? false : "terser", }; });