@wener/common 2.0.1 → 2.0.2

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 (107) hide show
  1. package/lib/cn/ChineseResidentIdNo.js +41 -0
  2. package/lib/cn/ChineseResidentIdNo.mod.js +1 -0
  3. package/lib/cn/{ResidentIdentityCardNumber.test.js → ChineseResidentIdNo.test.js} +7 -6
  4. package/lib/cn/DivisionCode.js +211 -300
  5. package/lib/cn/DivisionCode.mod.js +1 -0
  6. package/lib/cn/DivisionCode.test.js +9 -15
  7. package/lib/cn/{Mod11Checksum.js → Mod11.js} +1 -0
  8. package/lib/cn/{Mod31Checksum.js → Mod31.js} +1 -0
  9. package/lib/cn/UnifiedSocialCreditCode.js +130 -115
  10. package/lib/cn/UnifiedSocialCreditCode.mod.js +1 -0
  11. package/lib/cn/UnifiedSocialCreditCode.test.js +1 -1
  12. package/lib/cn/index.js +1 -3
  13. package/lib/cn/mod.js +6 -0
  14. package/lib/consola/formatLogObject.js +18 -6
  15. package/lib/dayjs/dayjs.js +38 -0
  16. package/lib/dayjs/formatDuration.js +58 -0
  17. package/lib/dayjs/formatDuration.test.js +90 -0
  18. package/lib/dayjs/index.js +3 -0
  19. package/lib/dayjs/parseDuration.js +32 -0
  20. package/lib/decimal/index.js +1 -0
  21. package/lib/decimal/parseDecimal.js +13 -0
  22. package/lib/{resource → foundation}/schema/SexType.js +5 -1
  23. package/lib/foundation/schema/index.js +1 -0
  24. package/lib/foundation/schema/parseSexType.js +18 -0
  25. package/lib/foundation/schema/types.js +5 -0
  26. package/lib/password/Password.js +10 -7
  27. package/lib/resource/ListQuery.js +119 -0
  28. package/lib/resource/index.js +1 -0
  29. package/lib/resource/schema/AnyResourceSchema.js +1 -1
  30. package/lib/resource/schema/index.js +5 -0
  31. package/lib/{resource/schema → schema}/SchemaRegistry.js +12 -5
  32. package/lib/schema/SchemaRegistry.mod.js +2 -0
  33. package/lib/schema/createSchemaData.js +1 -1
  34. package/lib/schema/getSchemaOptions.js +2 -2
  35. package/lib/schema/index.js +1 -0
  36. package/lib/utils/getEstimateProcessTime.js +20 -0
  37. package/lib/utils/index.js +1 -0
  38. package/package.json +23 -14
  39. package/src/cn/ChineseResidentIdNo.mod.ts +7 -0
  40. package/src/cn/ChineseResidentIdNo.test.ts +18 -0
  41. package/src/cn/ChineseResidentIdNo.ts +66 -0
  42. package/src/cn/DivisionCode.mod.ts +7 -0
  43. package/src/cn/DivisionCode.test.ts +3 -13
  44. package/src/cn/DivisionCode.ts +132 -195
  45. package/src/cn/{Mod11Checksum.ts → Mod11.ts} +3 -1
  46. package/src/cn/{Mod31Checksum.ts → Mod31.ts} +2 -0
  47. package/src/cn/UnifiedSocialCreditCode.mod.ts +7 -0
  48. package/src/cn/UnifiedSocialCreditCode.test.ts +2 -2
  49. package/src/cn/UnifiedSocialCreditCode.ts +105 -125
  50. package/src/cn/__snapshots__/ChineseResidentIdNo.test.ts.snap +14 -0
  51. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +18 -12
  52. package/src/cn/index.ts +1 -3
  53. package/src/cn/mod.ts +3 -0
  54. package/src/consola/formatLogObject.ts +12 -4
  55. package/src/dayjs/dayjs.ts +40 -0
  56. package/src/dayjs/formatDuration.test.ts +14 -0
  57. package/src/dayjs/formatDuration.ts +86 -0
  58. package/src/dayjs/index.ts +3 -0
  59. package/src/dayjs/parseDuration.ts +40 -0
  60. package/src/decimal/index.ts +1 -0
  61. package/src/decimal/parseDecimal.ts +16 -0
  62. package/src/foundation/schema/SexType.ts +21 -0
  63. package/src/foundation/schema/index.ts +1 -0
  64. package/src/foundation/schema/parseSexType.ts +19 -0
  65. package/src/foundation/schema/types.ts +8 -0
  66. package/src/password/Password.ts +2 -2
  67. package/src/resource/ListQuery.ts +53 -0
  68. package/src/resource/index.ts +1 -0
  69. package/src/resource/schema/AnyResourceSchema.ts +1 -1
  70. package/src/resource/schema/index.ts +5 -0
  71. package/src/schema/SchemaRegistry.mod.ts +1 -0
  72. package/src/{resource/schema → schema}/SchemaRegistry.ts +12 -8
  73. package/src/schema/createSchemaData.ts +1 -1
  74. package/src/schema/getSchemaOptions.ts +2 -2
  75. package/src/schema/index.ts +1 -0
  76. package/src/utils/getEstimateProcessTime.ts +36 -0
  77. package/src/utils/index.ts +1 -0
  78. package/lib/cn/ResidentIdentityCardNumber.js +0 -50
  79. package/lib/cn/formatDate.js +0 -13
  80. package/lib/cn/parseSex.js +0 -20
  81. package/lib/search/AdvanceSearch.js +0 -9
  82. package/lib/search/AdvanceSearch.test.js +0 -435
  83. package/lib/search/formatAdvanceSearch.js +0 -78
  84. package/lib/search/index.js +0 -1
  85. package/lib/search/optimizeAdvanceSearch.js +0 -143
  86. package/lib/search/parseAdvanceSearch.js +0 -20
  87. package/lib/search/parser.d.js +0 -1
  88. package/lib/search/parser.js +0 -3088
  89. package/lib/search/types.d.js +0 -1
  90. package/src/cn/ResidentIdentityCardNumber.test.ts +0 -17
  91. package/src/cn/ResidentIdentityCardNumber.ts +0 -96
  92. package/src/cn/__snapshots__/ResidentIdentityCardNumber.test.ts.snap +0 -15
  93. package/src/cn/formatDate.ts +0 -12
  94. package/src/cn/parseSex.ts +0 -13
  95. package/src/resource/schema/SexType.ts +0 -13
  96. package/src/search/AdvanceSearch.test.ts +0 -149
  97. package/src/search/AdvanceSearch.ts +0 -14
  98. package/src/search/Makefile +0 -2
  99. package/src/search/__snapshots__/AdvanceSearch.test.ts.snap +0 -675
  100. package/src/search/formatAdvanceSearch.ts +0 -52
  101. package/src/search/index.ts +0 -1
  102. package/src/search/optimizeAdvanceSearch.ts +0 -77
  103. package/src/search/parseAdvanceSearch.ts +0 -23
  104. package/src/search/parser.d.ts +0 -8
  105. package/src/search/parser.js +0 -2794
  106. package/src/search/parser.peggy +0 -237
  107. package/src/search/types.d.ts +0 -45
@@ -1,77 +0,0 @@
1
- import { arrayOfMaybeArray, deepEqual, type MaybeArray } from '@wener/utils';
2
- import { match } from 'ts-pattern';
3
- import { AdvanceSearch } from './AdvanceSearch';
4
-
5
- export function optimizeAdvanceSearch(expr: AdvanceSearch.Exprs): AdvanceSearch.Exprs {
6
- const NEG = { eq: 'ne', ne: 'eq', gt: 'lte', lt: 'gte', gte: 'lt', lte: 'gt' } as const;
7
- const _expr = (e: AdvanceSearch.Expr): MaybeArray<AdvanceSearch.Expr> => {
8
- // merge Exprs to AND ?
9
- return (
10
- match(e)
11
- // (EXPR) -> EXPR
12
- // TODO (EXPR EXPR) -> EXPR AND EXPR
13
- .with({ type: 'parentheses' }, (expr) => {
14
- // unwrap
15
- if (expr.value.length < 2) {
16
- return expr.value[0];
17
- }
18
- expr.value = expr.value.flatMap(_expr);
19
- return expr;
20
- })
21
- .with({ type: 'comment' }, (expr) => {
22
- // remove empty comment
23
- if (!expr.value.length) {
24
- return [];
25
- }
26
- return expr;
27
- })
28
- // NOT
29
- .with({ type: 'not' }, (expr) => {
30
- let out = arrayOfMaybeArray(_expr(expr.value));
31
- if (!out.length) {
32
- return [];
33
- } else if (out.length === 1) {
34
- expr.value = out[0];
35
- } else {
36
- throw new Error('NOT should have only one value');
37
- }
38
- return (
39
- match(expr.value)
40
- // NOT NOT EXPR -> EXPR
41
- .with({ type: 'not' }, (expr) => expr.value)
42
- // NOT EXPR -> -EXPR
43
- .with({ type: 'compare' }, (expr) => {
44
- return { ...expr, negative: !expr.negative };
45
- })
46
- .with({ type: 'keyword' }, (expr) => {
47
- return { ...expr, negative: !expr.negative };
48
- })
49
- .otherwise(() => expr)
50
- );
51
- })
52
- .with({ type: 'compare' }, (expr) => {
53
- // negative by swap operator
54
- if (expr.negative) {
55
- const ne = NEG[expr.operator as keyof typeof NEG];
56
- if (ne) {
57
- expr.operator = ne;
58
- expr.negative = false;
59
- }
60
- }
61
- if (expr.operator === 'range') {
62
- }
63
- return expr;
64
- })
65
- .otherwise((e) => e)
66
- );
67
- };
68
-
69
- let last = expr;
70
- while (true) {
71
- let next = structuredClone(last).flatMap(_expr);
72
- if (deepEqual(last, next)) {
73
- return last;
74
- }
75
- last = next;
76
- }
77
- }
@@ -1,23 +0,0 @@
1
- import { AdvanceSearch } from './AdvanceSearch';
2
- import { parse } from './parser';
3
-
4
- export function parseAdvanceSearch(s: string | undefined | null): AdvanceSearch.Expr[] {
5
- s = s?.trim();
6
- if (!s) {
7
- return [];
8
- }
9
-
10
- // no Logical, no Compare, no Quote, no Comment
11
- if (!/AND|OR|NOT|[-"():]|\/\*/.test(s)) {
12
- // fast path
13
- return s
14
- .split(/\s+/)
15
- .map((v) => v.trim())
16
- .filter(Boolean)
17
- .map((v) => {
18
- return { type: 'keyword', value: v };
19
- });
20
- }
21
-
22
- return parse(s);
23
- }
@@ -1,8 +0,0 @@
1
- export function parse(input: string, options?: ParseOptions): any;
2
-
3
- export interface ParseOptions {
4
- grammarSource?: string;
5
- startRule?: string;
6
-
7
- [k: string]: any;
8
- }