@xylabs/jest-helpers 2.12.14 → 2.12.16

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 (127) hide show
  1. package/dist/browser/index.cjs +63 -0
  2. package/dist/browser/index.cjs.map +1 -1
  3. package/dist/browser/index.d.cts +1 -0
  4. package/dist/browser/index.d.cts.map +1 -1
  5. package/dist/browser/index.d.mts +1 -0
  6. package/dist/browser/index.d.mts.map +1 -1
  7. package/dist/browser/index.d.ts +1 -0
  8. package/dist/browser/index.d.ts.map +1 -1
  9. package/dist/browser/index.js +71 -0
  10. package/dist/browser/index.js.map +1 -1
  11. package/dist/browser/tags/config.cjs +33 -0
  12. package/dist/browser/tags/config.cjs.map +1 -0
  13. package/dist/browser/tags/config.d.cts +5 -0
  14. package/dist/browser/tags/config.d.cts.map +1 -0
  15. package/dist/browser/tags/config.d.mts +5 -0
  16. package/dist/browser/tags/config.d.mts.map +1 -0
  17. package/dist/browser/tags/config.d.ts +5 -0
  18. package/dist/browser/tags/config.d.ts.map +1 -0
  19. package/dist/browser/tags/config.js +12 -0
  20. package/dist/browser/tags/config.js.map +1 -0
  21. package/dist/browser/tags/filter.cjs +72 -0
  22. package/dist/browser/tags/filter.cjs.map +1 -0
  23. package/dist/browser/tags/filter.d.cts +2 -0
  24. package/dist/browser/tags/filter.d.cts.map +1 -0
  25. package/dist/browser/tags/filter.d.mts +2 -0
  26. package/dist/browser/tags/filter.d.mts.map +1 -0
  27. package/dist/browser/tags/filter.d.ts +2 -0
  28. package/dist/browser/tags/filter.d.ts.map +1 -0
  29. package/dist/browser/tags/filter.js +49 -0
  30. package/dist/browser/tags/filter.js.map +1 -0
  31. package/dist/browser/tags/index.cjs +88 -0
  32. package/dist/browser/tags/index.cjs.map +1 -0
  33. package/dist/browser/tags/index.d.cts +3 -0
  34. package/dist/browser/tags/index.d.cts.map +1 -0
  35. package/dist/browser/tags/index.d.mts +3 -0
  36. package/dist/browser/tags/index.d.mts.map +1 -0
  37. package/dist/browser/tags/index.d.ts +3 -0
  38. package/dist/browser/tags/index.d.ts.map +1 -0
  39. package/dist/browser/tags/index.js +73 -0
  40. package/dist/browser/tags/index.js.map +1 -0
  41. package/dist/browser/tags/regexps.cjs +44 -0
  42. package/dist/browser/tags/regexps.cjs.map +1 -0
  43. package/dist/browser/tags/regexps.d.cts +7 -0
  44. package/dist/browser/tags/regexps.d.cts.map +1 -0
  45. package/dist/browser/tags/regexps.d.mts +7 -0
  46. package/dist/browser/tags/regexps.d.mts.map +1 -0
  47. package/dist/browser/tags/regexps.d.ts +7 -0
  48. package/dist/browser/tags/regexps.d.ts.map +1 -0
  49. package/dist/browser/tags/regexps.js +21 -0
  50. package/dist/browser/tags/regexps.js.map +1 -0
  51. package/dist/browser/tags/utils.cjs +36 -0
  52. package/dist/browser/tags/utils.cjs.map +1 -0
  53. package/dist/browser/tags/utils.d.cts +2 -0
  54. package/dist/browser/tags/utils.d.cts.map +1 -0
  55. package/dist/browser/tags/utils.d.mts +2 -0
  56. package/dist/browser/tags/utils.d.mts.map +1 -0
  57. package/dist/browser/tags/utils.d.ts +2 -0
  58. package/dist/browser/tags/utils.d.ts.map +1 -0
  59. package/dist/browser/tags/utils.js +13 -0
  60. package/dist/browser/tags/utils.js.map +1 -0
  61. package/dist/node/index.cjs +65 -0
  62. package/dist/node/index.cjs.map +1 -1
  63. package/dist/node/index.d.cts +1 -0
  64. package/dist/node/index.d.cts.map +1 -1
  65. package/dist/node/index.d.mts +1 -0
  66. package/dist/node/index.d.mts.map +1 -1
  67. package/dist/node/index.d.ts +1 -0
  68. package/dist/node/index.d.ts.map +1 -1
  69. package/dist/node/index.js +71 -0
  70. package/dist/node/index.js.map +1 -1
  71. package/dist/node/tags/config.cjs +40 -0
  72. package/dist/node/tags/config.cjs.map +1 -0
  73. package/dist/node/tags/config.d.cts +5 -0
  74. package/dist/node/tags/config.d.cts.map +1 -0
  75. package/dist/node/tags/config.d.mts +5 -0
  76. package/dist/node/tags/config.d.mts.map +1 -0
  77. package/dist/node/tags/config.d.ts +5 -0
  78. package/dist/node/tags/config.d.ts.map +1 -0
  79. package/dist/node/tags/config.js +12 -0
  80. package/dist/node/tags/config.js.map +1 -0
  81. package/dist/node/tags/filter.cjs +76 -0
  82. package/dist/node/tags/filter.cjs.map +1 -0
  83. package/dist/node/tags/filter.d.cts +2 -0
  84. package/dist/node/tags/filter.d.cts.map +1 -0
  85. package/dist/node/tags/filter.d.mts +2 -0
  86. package/dist/node/tags/filter.d.mts.map +1 -0
  87. package/dist/node/tags/filter.d.ts +2 -0
  88. package/dist/node/tags/filter.d.ts.map +1 -0
  89. package/dist/node/tags/filter.js +49 -0
  90. package/dist/node/tags/filter.js.map +1 -0
  91. package/dist/node/tags/index.cjs +93 -0
  92. package/dist/node/tags/index.cjs.map +1 -0
  93. package/dist/node/tags/index.d.cts +3 -0
  94. package/dist/node/tags/index.d.cts.map +1 -0
  95. package/dist/node/tags/index.d.mts +3 -0
  96. package/dist/node/tags/index.d.mts.map +1 -0
  97. package/dist/node/tags/index.d.ts +3 -0
  98. package/dist/node/tags/index.d.ts.map +1 -0
  99. package/dist/node/tags/index.js +73 -0
  100. package/dist/node/tags/index.js.map +1 -0
  101. package/dist/node/tags/regexps.cjs +53 -0
  102. package/dist/node/tags/regexps.cjs.map +1 -0
  103. package/dist/node/tags/regexps.d.cts +7 -0
  104. package/dist/node/tags/regexps.d.cts.map +1 -0
  105. package/dist/node/tags/regexps.d.mts +7 -0
  106. package/dist/node/tags/regexps.d.mts.map +1 -0
  107. package/dist/node/tags/regexps.d.ts +7 -0
  108. package/dist/node/tags/regexps.d.ts.map +1 -0
  109. package/dist/node/tags/regexps.js +21 -0
  110. package/dist/node/tags/regexps.js.map +1 -0
  111. package/dist/node/tags/utils.cjs +40 -0
  112. package/dist/node/tags/utils.cjs.map +1 -0
  113. package/dist/node/tags/utils.d.cts +2 -0
  114. package/dist/node/tags/utils.d.cts.map +1 -0
  115. package/dist/node/tags/utils.d.mts +2 -0
  116. package/dist/node/tags/utils.d.mts.map +1 -0
  117. package/dist/node/tags/utils.d.ts +2 -0
  118. package/dist/node/tags/utils.d.ts.map +1 -0
  119. package/dist/node/tags/utils.js +13 -0
  120. package/dist/node/tags/utils.js.map +1 -0
  121. package/package.json +6 -3
  122. package/src/index.ts +1 -0
  123. package/src/tags/config.ts +7 -0
  124. package/src/tags/filter.ts +46 -0
  125. package/src/tags/index.ts +25 -0
  126. package/src/tags/regexps.ts +17 -0
  127. package/src/tags/utils.ts +8 -0
package/package.json CHANGED
@@ -38,9 +38,12 @@
38
38
  "typescript",
39
39
  "esm"
40
40
  ],
41
+ "dependencies": {
42
+ "minimist": "^1.2.8"
43
+ },
41
44
  "devDependencies": {
42
- "@xylabs/ts-scripts-yarn3": "^3.0.79",
43
- "@xylabs/tsconfig": "^3.0.79",
45
+ "@xylabs/ts-scripts-yarn3": "^3.0.88",
46
+ "@xylabs/tsconfig": "^3.0.88",
44
47
  "jest": "^29.7.0",
45
48
  "typescript": "^5.2.2"
46
49
  },
@@ -55,6 +58,6 @@
55
58
  "url": "https://github.com/xylabs/sdk-js.git"
56
59
  },
57
60
  "sideEffects": false,
58
- "version": "2.12.14",
61
+ "version": "2.12.16",
59
62
  "type": "module"
60
63
  }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './describeIf'
2
2
  export * from './itIf'
3
+ export * from './tags'
3
4
  export * from './testIf'
@@ -0,0 +1,7 @@
1
+ export const NOT_SYMBOL = '!'
2
+
3
+ export const AND_SYMBOL = '&&'
4
+
5
+ export const OR_SYMBOL = '||'
6
+
7
+ export const RESERVED_COMMANDS = ['--tags']
@@ -0,0 +1,46 @@
1
+ import { AND_SYMBOL, NOT_SYMBOL, OR_SYMBOL } from './config'
2
+ import { AND_REGX, BAD_REGX, GOOD_REGX, OR_REGX, PLAIN_REGX } from './regexps'
3
+
4
+ // f.e. tag1 !tag2
5
+ // tag1 && tag2 && !tag3
6
+ // tag1 || tag2 || !tag3
7
+
8
+ //ATTENTION!!: cases with () not handled: f.e. (tag1 && tag2) || tag3 won`t work
9
+
10
+ export const matchFilter =
11
+ (strParam = '') =>
12
+ (tags: string[]) => {
13
+ const str = strParam.trim()
14
+ if (typeof tags === 'string') {
15
+ tags = [tags]
16
+ }
17
+ if (str.includes(OR_SYMBOL)) {
18
+ const include = goodTags(str.split(OR_REGX))
19
+ const exclude = badTags(str.split(OR_REGX))
20
+ if (exclude.length === 0) {
21
+ return include.length === 0 || include.some((s) => tags.includes(s))
22
+ }
23
+ if (include.length === 0 && exclude.length !== 0) {
24
+ return exclude.some((s) => !tags.includes(s))
25
+ }
26
+ return include.length === 0 || include.some((s) => tags.includes(s)) || exclude.some((s) => !tags.includes(s))
27
+ }
28
+ if (str.includes(AND_SYMBOL)) {
29
+ const include = goodTags(str.split(AND_REGX))
30
+ const exclude = badTags(str.split(AND_REGX))
31
+
32
+ return (include.length === 0 || include.every((s) => tags.includes(s))) && !exclude.some((s) => tags.includes(s))
33
+ }
34
+ const include = goodTags(str.split(PLAIN_REGX))
35
+ const exclude = badTags(str.split(PLAIN_REGX))
36
+
37
+ return (include.length === 0 || include.some((s) => tags.includes(s))) && !exclude.some((s) => tags.includes(s))
38
+ }
39
+
40
+ const goodTags = (arr: string[]) => {
41
+ return arr.filter((s) => s.match(GOOD_REGX))
42
+ }
43
+
44
+ const badTags = (arr: string[]) => {
45
+ return arr.filter((s) => s.match(BAD_REGX)).map((s) => s.replace(NOT_SYMBOL, ''))
46
+ }
@@ -0,0 +1,25 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
2
+ const argv = require('minimist')(process.argv.slice(2))
3
+
4
+ import { matchFilter } from './filter'
5
+
6
+ //Based on https://www.npmjs.com/package/jest-tags/v/1.0.1
7
+
8
+ export const args = argv(process.argv.slice(2))
9
+
10
+ export function tags(...tagLabels: string[]) {
11
+ const filter = matchFilter(args.tags)
12
+ const thisGlobal = global
13
+
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ const chain: Record<string, any> = {}
16
+
17
+ const filterMatch = filter(tagLabels)
18
+
19
+ chain.test = filterMatch ? thisGlobal.test : thisGlobal.xtest
20
+ chain.test.only = thisGlobal.test.only
21
+ chain.test.skip = thisGlobal.test.skip
22
+ chain.xtest = thisGlobal.xtest
23
+
24
+ return chain
25
+ }
@@ -0,0 +1,17 @@
1
+ import { AND_SYMBOL, NOT_SYMBOL, OR_SYMBOL } from './config'
2
+
3
+ export const escape = (str: string) =>
4
+ str
5
+ .split('')
6
+ .map((symbol) => `\\${symbol}`)
7
+ .join('')
8
+
9
+ export const AND_REGX = new RegExp(`\\s*${escape(AND_SYMBOL)}\\s*`)
10
+
11
+ export const OR_REGX = new RegExp(`\\s*${escape(OR_SYMBOL)}\\s*`)
12
+
13
+ export const PLAIN_REGX = new RegExp('\\s+')
14
+
15
+ export const BAD_REGX = new RegExp(`^${escape(NOT_SYMBOL)}.*$`)
16
+
17
+ export const GOOD_REGX = new RegExp(`^[^${escape(NOT_SYMBOL)}].*$`)
@@ -0,0 +1,8 @@
1
+ import { RESERVED_COMMANDS } from './config'
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ export const getJestPassedParams = (argv: any) => {
5
+ return [...argv, '-i'].filter((prop) => {
6
+ return prop.startsWith('-') && RESERVED_COMMANDS.every((command) => command !== prop)
7
+ })
8
+ }