casper-context 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.
Files changed (44) hide show
  1. package/README.md +253 -0
  2. package/dist/index.js +9 -0
  3. package/dist/lifecycle/post.js +239 -0
  4. package/dist/lifecycle/pre.js +113 -0
  5. package/dist/plugin.js +57 -0
  6. package/dist/transforms/autoContextTransform.js +1 -0
  7. package/dist/transforms/contextTransform.js +1 -0
  8. package/dist/transforms/stateTransform.js +1 -0
  9. package/dist/types/plugin.d.js +1 -0
  10. package/dist/utils/astHelpers.js +644 -0
  11. package/dist/utils/constants.js +111 -0
  12. package/dist/utils/names.js +1 -0
  13. package/dist/utils/scope.js +1 -0
  14. package/dist/utils/utilityHelpers.js +606 -0
  15. package/dist/visitors/AssignmentExpression.js +104 -0
  16. package/dist/visitors/CallExpression.js +1 -0
  17. package/dist/visitors/FunctionDeclaration.js +116 -0
  18. package/dist/visitors/Identifier.js +123 -0
  19. package/dist/visitors/JSXElement.js +1 -0
  20. package/dist/visitors/Program.js +278 -0
  21. package/dist/visitors/ReturnStatement.js +81 -0
  22. package/dist/visitors/VariableDeclaration.js +209 -0
  23. package/package.json +60 -0
  24. package/src/index.js +2 -0
  25. package/src/lifecycle/post.js +237 -0
  26. package/src/lifecycle/pre.js +103 -0
  27. package/src/plugin.js +51 -0
  28. package/src/transforms/autoContextTransform.js +0 -0
  29. package/src/transforms/contextTransform.js +0 -0
  30. package/src/transforms/stateTransform.js +0 -0
  31. package/src/types/plugin.d.ts +0 -0
  32. package/src/utils/astHelpers.js +767 -0
  33. package/src/utils/constants.js +102 -0
  34. package/src/utils/names.js +0 -0
  35. package/src/utils/scope.js +0 -0
  36. package/src/utils/utilityHelpers.js +636 -0
  37. package/src/visitors/AssignmentExpression.js +100 -0
  38. package/src/visitors/CallExpression.js +0 -0
  39. package/src/visitors/FunctionDeclaration.js +114 -0
  40. package/src/visitors/Identifier.js +142 -0
  41. package/src/visitors/JSXElement.js +0 -0
  42. package/src/visitors/Program.js +280 -0
  43. package/src/visitors/ReturnStatement.js +75 -0
  44. package/src/visitors/VariableDeclaration.js +216 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._CCTX_VAR = exports._CCTX_VALUE = exports._CCTX_USE_CONTEXT = exports._CCTX_UNKNOW = exports._CCTX_UNDUS_CORE_REACT = exports._CCTX_UNDUS_CORE_GBL_CONTEXT = exports._CCTX_UNDEFINED = exports._CCTX_SET = exports._CCTX_REQUIRE = exports._CCTX_REACT = exports._CCTX_PROVIDER = exports._CCTX_LEFT = exports._CCTX_KEY = exports._CCTX_ID = exports._CCTX_EMPTY = exports._CCTX_CREATE_ELEMENT = exports._CCTX_CONST = exports._CCTX_CMP_NAME_PREFIX = exports._CCTX_BODY = exports._CCTX_ARGUMENT = exports._CCTX_ = exports.VARIABLE_DECLARATOR = exports.USE_STRICT = exports.UPDATE_EXPRESSION = exports.UNICODE_UTF8 = exports.STRING_LITERAL = exports.REACT_IMPORT_USE_STATE_HOOKS_NAME = exports.REACT_IMPORT_CORE_NAME = exports.PREV_STATE = exports.PLUGIN_NAME = exports.OBJECT_EXPRESSION = exports.NUMERIC_LITERAL = exports.NO_FILE = exports.NON_LITERAL = exports.NODE_MODULES = exports.IDENTIFIER = exports.GLOBAL_PREFIX = exports.GBL_CONTEXT_JS = exports.FOLDER_DIST = exports.FOLDER_BUILD = exports.FILE_HASH_MD5 = exports.ESLINT_RC_FILE = exports.DIGEST_HEX = exports.CONTEXT_NAMESPACE = exports.CONTEXT_FOLDER_NAME = exports.CONTEXT_FILE_NAME = exports.COMPONENT = exports.COLORS = exports.CASPER_STRING_TYPE = exports.CASPER_READ_ONLY_TYPE = exports.CASPER_LOG_TYPE_ERROR = exports.CASPER_ESLINT_GLOBAL_JS = exports.CASPER_DEBUG_LOG_FILE_NAME = exports.CASPER_CONFIG_FILE = exports.BOOLEAN_LITERAL = exports.ASSIGNMENT_EXPRESSION = exports.ARRAY_EXPRESSION = exports.ANONYMOUS_FUNCTION = exports.ANONYMOUS_CLASS = void 0;
7
+ /**
8
+ * @fileoverview Centralized constants for the Casper Context Babel Plugin.
9
+ * This module contains all configuration strings, AST node identifiers,
10
+ * and environment-specific constants used for state management and code injection.
11
+ */
12
+
13
+ /** * Plugin Identity & Configuration */
14
+ const PLUGIN_NAME = exports.PLUGIN_NAME = 'casper-context';
15
+ const CASPER_CONFIG_FILE = exports.CASPER_CONFIG_FILE = '.casperctxrc.json';
16
+ const CASPER_DEBUG_LOG_FILE_NAME = exports.CASPER_DEBUG_LOG_FILE_NAME = '.casperctx.debug.log';
17
+ const USE_STRICT = exports.USE_STRICT = 'use strict';
18
+ const CASPER_LOG_TYPE_ERROR = exports.CASPER_LOG_TYPE_ERROR = 'error';
19
+
20
+ /** * Context Logic & Namespacing
21
+ * @description Variables used to identify and scope the custom context transformation.
22
+ */
23
+ const GLOBAL_PREFIX = exports.GLOBAL_PREFIX = '_$_';
24
+ const CONTEXT_NAMESPACE = exports.CONTEXT_NAMESPACE = '__CASPER_CONTEXT__';
25
+ const CONTEXT_FOLDER_NAME = exports.CONTEXT_FOLDER_NAME = 'src/scopeContext';
26
+ const CONTEXT_FILE_NAME = exports.CONTEXT_FILE_NAME = 'gblContext.js';
27
+ const GBL_CONTEXT_JS = exports.GBL_CONTEXT_JS = 'gblContext.js';
28
+ const _CCTX_CMP_NAME_PREFIX = exports._CCTX_CMP_NAME_PREFIX = '_$_ctx_';
29
+ const _CCTX_ = exports._CCTX_ = 'CTX_'; // Internal prefix for generated context variables
30
+
31
+ /** * React & Framework Identifiers
32
+ * @description Standard React hook names and internal library aliases for injection.
33
+ */
34
+ const REACT_IMPORT_CORE_NAME = exports.REACT_IMPORT_CORE_NAME = 'react';
35
+ const REACT_IMPORT_USE_STATE_HOOKS_NAME = exports.REACT_IMPORT_USE_STATE_HOOKS_NAME = 'useState';
36
+ const _CCTX_REACT = exports._CCTX_REACT = 'react';
37
+ const _CCTX_USE_CONTEXT = exports._CCTX_USE_CONTEXT = 'useContext';
38
+ const _CCTX_CREATE_ELEMENT = exports._CCTX_CREATE_ELEMENT = 'createElement';
39
+ const _CCTX_PROVIDER = exports._CCTX_PROVIDER = 'Provider';
40
+ const _CCTX_VALUE = exports._CCTX_VALUE = 'value';
41
+
42
+ /** * AST Node Type Mapping
43
+ * @description Strings matching Babel's internal node types for safe AST traversal.
44
+ */
45
+ const IDENTIFIER = exports.IDENTIFIER = 'Identifier';
46
+ const NUMERIC_LITERAL = exports.NUMERIC_LITERAL = 'NumericLiteral';
47
+ const STRING_LITERAL = exports.STRING_LITERAL = 'StringLiteral';
48
+ const BOOLEAN_LITERAL = exports.BOOLEAN_LITERAL = 'BooleanLiteral';
49
+ const ARRAY_EXPRESSION = exports.ARRAY_EXPRESSION = 'ArrayExpression';
50
+ const OBJECT_EXPRESSION = exports.OBJECT_EXPRESSION = 'ObjectExpression';
51
+ const VARIABLE_DECLARATOR = exports.VARIABLE_DECLARATOR = 'VariableDeclarator';
52
+ const ASSIGNMENT_EXPRESSION = exports.ASSIGNMENT_EXPRESSION = 'AssignmentExpression';
53
+ const UPDATE_EXPRESSION = exports.UPDATE_EXPRESSION = 'UpdateExpression';
54
+
55
+ /** * AST Node Property Keys
56
+ * @description Specific keys within Babel nodes used for targeting during transformation.
57
+ */
58
+ const _CCTX_ID = exports._CCTX_ID = 'id';
59
+ const _CCTX_LEFT = exports._CCTX_LEFT = 'left'; // Used in AssignmentExpressions
60
+ const _CCTX_ARGUMENT = exports._CCTX_ARGUMENT = 'argument'; // Used in UpdateExpressions
61
+ const _CCTX_KEY = exports._CCTX_KEY = 'key';
62
+ const _CCTX_BODY = exports._CCTX_BODY = 'body';
63
+
64
+ /** * Internal Transformation Aliases
65
+ * @description Identifiers and keywords used for generating new code structures.
66
+ */
67
+ const _CCTX_VAR = exports._CCTX_VAR = 'var';
68
+ const _CCTX_CONST = exports._CCTX_CONST = 'const';
69
+ const _CCTX_REQUIRE = exports._CCTX_REQUIRE = 'require';
70
+ const _CCTX_UNDUS_CORE_REACT = exports._CCTX_UNDUS_CORE_REACT = '_react';
71
+ const _CCTX_UNDUS_CORE_GBL_CONTEXT = exports._CCTX_UNDUS_CORE_GBL_CONTEXT = '_gblContext';
72
+ const PREV_STATE = exports.PREV_STATE = 'prevState'; // For functional state updates: (prevState) => ...
73
+ const _CCTX_SET = exports._CCTX_SET = 'set'; // Prefix for state setter functions
74
+
75
+ /** * Component & Scope Classification */
76
+ const COMPONENT = exports.COMPONENT = 'component';
77
+ const ANONYMOUS_FUNCTION = exports.ANONYMOUS_FUNCTION = 'anonymous_function';
78
+ const ANONYMOUS_CLASS = exports.ANONYMOUS_CLASS = 'anonymous_class';
79
+
80
+ /** * File System & Build Tooling
81
+ * @description Constants for file manipulation, hashing, and distribution paths.
82
+ */
83
+ const UNICODE_UTF8 = exports.UNICODE_UTF8 = 'utf8';
84
+ const FILE_HASH_MD5 = exports.FILE_HASH_MD5 = 'md5';
85
+ const DIGEST_HEX = exports.DIGEST_HEX = 'hex';
86
+ const NODE_MODULES = exports.NODE_MODULES = 'node_modules';
87
+ const FOLDER_DIST = exports.FOLDER_DIST = '/dist/';
88
+ const FOLDER_BUILD = exports.FOLDER_BUILD = '/build/';
89
+ const ESLINT_RC_FILE = exports.ESLINT_RC_FILE = '.eslintrc.js';
90
+ const CASPER_ESLINT_GLOBAL_JS = exports.CASPER_ESLINT_GLOBAL_JS = 'casper-eslint.global.js';
91
+ const CASPER_STRING_TYPE = exports.CASPER_STRING_TYPE = 'string';
92
+ const CASPER_READ_ONLY_TYPE = exports.CASPER_READ_ONLY_TYPE = 'readonly';
93
+
94
+ /** * Sentinel, Fallback & Literal Values */
95
+ const _CCTX_EMPTY = exports._CCTX_EMPTY = '';
96
+ const _CCTX_UNDEFINED = exports._CCTX_UNDEFINED = 'undefined';
97
+ const _CCTX_UNKNOW = exports._CCTX_UNKNOW = 'Unknown';
98
+ const NO_FILE = exports.NO_FILE = 'noFile';
99
+ const NON_LITERAL = exports.NON_LITERAL = 'NON_LITERAL';
100
+ const COLORS = exports.COLORS = {
101
+ reset: "\x1b[0m",
102
+ info: "\x1b[36m",
103
+ // Cyan
104
+ warn: "\x1b[33m",
105
+ // Yellow
106
+ error: "\x1b[31m",
107
+ // Red
108
+ debug: "\x1b[35m",
109
+ // Magenta
110
+ trace: "\x1b[90m" // Gray
111
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ "use strict";