@intlayer/babel 9.5.11 → 9.5.12

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.
Files changed (32) hide show
  1. package/dist/cjs/analyzeContentUsage.cjs +54 -26
  2. package/dist/cjs/analyzeContentUsage.cjs.map +1 -1
  3. package/dist/cjs/babel-plugin-intlayer-field-rename.cjs +39 -18
  4. package/dist/cjs/babel-plugin-intlayer-field-rename.cjs.map +1 -1
  5. package/dist/cjs/babel-plugin-intlayer-purge.cjs +2 -0
  6. package/dist/cjs/babel-plugin-intlayer-purge.cjs.map +1 -1
  7. package/dist/cjs/getExtractPluginOptions.cjs.map +1 -1
  8. package/dist/cjs/staticAstReaders.cjs +96 -0
  9. package/dist/cjs/staticAstReaders.cjs.map +1 -1
  10. package/dist/cjs/transformers.cjs +36 -7
  11. package/dist/cjs/transformers.cjs.map +1 -1
  12. package/dist/esm/analyzeContentUsage.mjs +55 -27
  13. package/dist/esm/analyzeContentUsage.mjs.map +1 -1
  14. package/dist/esm/babel-plugin-intlayer-field-rename.mjs +40 -19
  15. package/dist/esm/babel-plugin-intlayer-field-rename.mjs.map +1 -1
  16. package/dist/esm/babel-plugin-intlayer-purge.mjs +2 -0
  17. package/dist/esm/babel-plugin-intlayer-purge.mjs.map +1 -1
  18. package/dist/esm/getExtractPluginOptions.mjs +1 -1
  19. package/dist/esm/getExtractPluginOptions.mjs.map +1 -1
  20. package/dist/esm/staticAstReaders.mjs +94 -1
  21. package/dist/esm/staticAstReaders.mjs.map +1 -1
  22. package/dist/esm/transformers.mjs +36 -7
  23. package/dist/esm/transformers.mjs.map +1 -1
  24. package/dist/types/analyzeContentUsage.d.ts +6 -1
  25. package/dist/types/analyzeContentUsage.d.ts.map +1 -1
  26. package/dist/types/babel-plugin-intlayer-field-rename.d.ts.map +1 -1
  27. package/dist/types/babel-plugin-intlayer-purge.d.ts.map +1 -1
  28. package/dist/types/staticAstReaders.d.ts +41 -0
  29. package/dist/types/staticAstReaders.d.ts.map +1 -1
  30. package/dist/types/transformers.d.ts +8 -1
  31. package/dist/types/transformers.d.ts.map +1 -1
  32. package/package.json +8 -8
@@ -80,5 +80,46 @@ export declare const splitNamespace: (namespace: string) => {
80
80
  * is.
81
81
  */
82
82
  export declare const unwrapAwait: (babelTypes: typeof BabelTypes, path: NodePath<BabelTypes.Node>) => NodePath<BabelTypes.Node>;
83
+ /**
84
+ * Climbs past every enclosing value-preserving wrapper (see
85
+ * {@link isTransparentWrapper}), so `(content.field as any).sub` is walked the
86
+ * same way as `content.field.sub`.
87
+ */
88
+ export declare const skipTransparentWrappers: (babelTypes: typeof BabelTypes, path: NodePath<BabelTypes.Node>) => NodePath<BabelTypes.Node>;
89
+ /** How the value of a content-producing expression is consumed. */
90
+ export type ContentRootResolution =
91
+ /** Consumed inline — inspect `rootPath.parent` (member access, argument…). */
92
+ {
93
+ kind: 'expression';
94
+ rootPath: NodePath<BabelTypes.Node>;
95
+ } |
96
+ /** Stored into a local binding (`const x = …` / `const { a } = …`). */
97
+ {
98
+ kind: 'binding';
99
+ rootPath: NodePath<BabelTypes.Node>;
100
+ bindingTarget: BabelTypes.Identifier | BabelTypes.ObjectPattern;
101
+ } |
102
+ /** Skipped by an array-pattern hole (`const [, b] = await Promise.all(…)`). */
103
+ {
104
+ kind: 'discarded';
105
+ };
106
+ /**
107
+ * Resolves where the content returned by `path` (a `useIntlayer('key')` call
108
+ * or any expression evaluating to the same content) ends up.
109
+ *
110
+ * Looks through TypeScript casts, parentheses and `await`, and through
111
+ * `const [a, { b }] = await Promise.all([getIntlayerAsync('x'), …])`, where the
112
+ * array-pattern element at the call's index is the binding target.
113
+ *
114
+ * Both the usage analyser and the field renamer resolve roots through this
115
+ * function, so every shape the analyser tracks is one the renamer rewrites.
116
+ */
117
+ export declare const resolveContentRoot: (babelTypes: typeof BabelTypes, path: NodePath<BabelTypes.Node>) => ContentRootResolution;
118
+ /**
119
+ * Returns `true` when the value at `path` is only tested, never read: `!x`,
120
+ * `typeof x`, `if (x)`, `x ? … : …`, `x && …`, `x === y`. Such uses expose no
121
+ * key names, so they neither block pruning nor make a field opaque.
122
+ */
123
+ export declare const isTestOnlyUse: (babelTypes: typeof BabelTypes, path: NodePath<BabelTypes.Node>) => boolean;
83
124
  //#endregion
84
125
  //# sourceMappingURL=staticAstReaders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"staticAstReaders.d.ts","names":[],"sources":["../../src/staticAstReaders.ts"],"mappings":";;;;;;;;;;;;;;;;;qBAkBa,mBAAgB,mBACR,YAAU,MACvB,WAAW;;qBAeN,mBAAgB;;;;;;;;;qBAWhB,yBAAsB,mBACd,YAAU,MACvB,WAAW;;qBAkBN,qBAAkB,mBACV,YAAU,UACnB,WAAW,gBAAc;;;;;;qBAWxB,qBAAkB,mBACV,YAAU,kBACX,WAAW,kBAAgB,yBAE5C,WAAW;;;;;;qBAaD;;YAGD,eAAe,KAAK,WAAW;;;;;;qBAO9B,qBAAkB,mBACV,YAAU,kBACX,WAAW,kBAAgB,yBAE5C;;;;;;qBAeU,yBAAsB,mBACd,YAAU,kBACX,WAAW,kBAAgB,yBAE5C,eAAe,WAAW;;;;;;;qBAgBhB,yBAAsB,mBACd,YAAU,gBACb,WAAW,mBAAiB,0BAE3C,WAAW;;;;;;;;qBAgCD,iBAAc;EAEtB;EAAuB;;;;;;;;qBAef,cAAW,mBACH,YAAU,MACvB,SAAS,WAAW,UACzB,SAAS,WAAW"}
1
+ {"version":3,"file":"staticAstReaders.d.ts","names":[],"sources":["../../src/staticAstReaders.ts"],"mappings":";;;;;;;;;;;;;;;;;qBAkBa,mBAAgB,mBACR,YAAU,MACvB,WAAW;;qBAeN,mBAAgB;;;;;;;;;qBAWhB,yBAAsB,mBACd,YAAU,MACvB,WAAW;;qBAkBN,qBAAkB,mBACV,YAAU,UACnB,WAAW,gBAAc;;;;;;qBAWxB,qBAAkB,mBACV,YAAU,kBACX,WAAW,kBAAgB,yBAE5C,WAAW;;;;;;qBAaD;;YAGD,eAAe,KAAK,WAAW;;;;;;qBAO9B,qBAAkB,mBACV,YAAU,kBACX,WAAW,kBAAgB,yBAE5C;;;;;;qBAeU,yBAAsB,mBACd,YAAU,kBACX,WAAW,kBAAgB,yBAE5C,eAAe,WAAW;;;;;;;qBAgBhB,yBAAsB,mBACd,YAAU,gBACb,WAAW,mBAAiB,0BAE3C,WAAW;;;;;;;;qBAgCD,iBAAc;EAEtB;EAAuB;;;;;;;;qBAef,cAAW,mBACH,YAAU,MACvB,SAAS,WAAW,UACzB,SAAS,WAAW;;;;;;qBA6BV,0BAAuB,mBACf,YAAU,MACvB,SAAS,WAAW,UACzB,SAAS,WAAW;;YAwCX;;;EAEN;EAAoB,UAAU,SAAS,WAAW;;;;EAGlD;EACA,UAAU,SAAS,WAAW;EAC9B,eAAe,WAAW,aAAa,WAAW;;;;EAGlD;;;;;;;;;;;;;qBAaO,qBAAkB,mBACV,YAAU,MACvB,SAAS,WAAW,UACzB;;;;;;qBAwEU,gBAAa,mBACL,YAAU,MACvB,SAAS,WAAW"}
@@ -79,10 +79,17 @@ export declare const renameFieldsInSourceFile: (sourceFilePath: string, code: st
79
79
  * `useIntlayer('key')` / `getIntlayer('key')` calls into `useDictionary(_hash)`
80
80
  * / `getDictionary(_hash)` and injecting the corresponding dictionary imports.
81
81
  *
82
+ * When `fieldRenamePruneContext` is given, dictionary field accesses are
83
+ * renamed in the same Babel pass (see {@link renameFieldsInSourceFile}): the
84
+ * rename plugin is listed first, so its `Program.exit` sees the dictionary
85
+ * keys before the optimize plugin's `Program.exit` erases them — saving a
86
+ * full parse and code generation per file. `code` must be plain or compiled
87
+ * JS, as in a bundler's post-transform hook.
88
+ *
82
89
  * Returns `{ code, map }` on success, or `null` if the transformation produced
83
90
  * no output.
84
91
  */
85
- export declare const optimizeSourceFile: (code: string, sourceFilePath: string, options: OptimizePluginOptions) => Promise<{
92
+ export declare const optimizeSourceFile: (code: string, sourceFilePath: string, options: OptimizePluginOptions, fieldRenamePruneContext?: PruneContext) => Promise<{
86
93
  code: string;
87
94
  map: string | object | null | undefined;
88
95
  } | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","names":[],"sources":["../../src/transformers.ts"],"mappings":";;;;;;;;;qBA0Ba,sBAAsB;;;;;;;;;;;;;;;;;;;;qBAiCtB,uBAAoB,gCAAkC;;;;;;qBAWtD,sBAAoB;;;;;;qBAgBpB,qBAAkB,yBACJ,yBACxB;;;;;;qBAoBU,mBAAiB;;;;;;;;;;;;;qBAqCjB,0BAAuB,wBACZ,cACV,cACE,cAAY,gBACV,yBACf;;;;;;;qBAyBU,qBAAkB,cACjB,wBACU,cACR,iBACb;;;;;;;;qBAqBU,2BAAwB,wBACb,cACV,cACE,iBACb;;;;;;;;;qBA8CU,qBAAkB,cACjB,wBACU,SACb,0BACR;EACD;EACA"}
1
+ {"version":3,"file":"transformers.d.ts","names":[],"sources":["../../src/transformers.ts"],"mappings":";;;;;;;;;qBA0Ba,sBAAsB;;;;;;;;;;;;;;;;;;;;qBAiCtB,uBAAoB,gCAAkC;;;;;;qBAWtD,sBAAoB;;;;;;qBAgBpB,qBAAkB,yBACJ,yBACxB;;;;;;qBAoBU,mBAAiB;;;;;;;;;;;;;qBA8DjB,0BAAuB,wBACZ,cACV,cACE,cAAY,gBACV,yBACf;;;;;;;qBAyBU,qBAAkB,cACjB,wBACU,cACR,iBACb;;;;;;;;qBAqBU,2BAAwB,wBACb,cACV,cACE,iBACb;;;;;;;;;;;;;;;;qBAiDU,qBAAkB,cACjB,wBACU,SACb,uBAAqB,0BACJ,iBACzB;EACD;EACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/babel",
3
- "version": "9.5.11",
3
+ "version": "9.5.12",
4
4
  "private": false,
5
5
  "description": "A Babel plugin for Intlayer that transforms declaration files and provides internationalization features during the build process according to the Intlayer configuration.",
6
6
  "keywords": [
@@ -90,11 +90,11 @@
90
90
  "@babel/plugin-syntax-jsx": "8.0.1",
91
91
  "@babel/traverse": "8.0.5",
92
92
  "@babel/types": "8.0.5",
93
- "@intlayer/config": "9.5.11",
94
- "@intlayer/core": "9.5.11",
95
- "@intlayer/dictionaries-entry": "9.5.11",
96
- "@intlayer/engine": "9.5.11",
97
- "@intlayer/types": "9.5.11"
93
+ "@intlayer/config": "9.5.12",
94
+ "@intlayer/core": "9.5.12",
95
+ "@intlayer/dictionaries-entry": "9.5.12",
96
+ "@intlayer/engine": "9.5.12",
97
+ "@intlayer/types": "9.5.12"
98
98
  },
99
99
  "devDependencies": {
100
100
  "@babel/plugin-syntax-jsx": "8.0.1",
@@ -112,8 +112,8 @@
112
112
  "vitest": "5.0.2"
113
113
  },
114
114
  "peerDependencies": {
115
- "@intlayer/svelte-compiler": "9.5.11",
116
- "@intlayer/vue-compiler": "9.5.11"
115
+ "@intlayer/svelte-compiler": "9.5.12",
116
+ "@intlayer/vue-compiler": "9.5.12"
117
117
  },
118
118
  "peerDependenciesMeta": {
119
119
  "@intlayer/svelte-compiler": {