flagsmith-nodejs 6.1.0 → 7.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 (117) hide show
  1. package/.github/workflows/conventional-commit.yml +29 -0
  2. package/.github/workflows/publish.yml +20 -17
  3. package/.github/workflows/pull_request.yaml +36 -33
  4. package/.github/workflows/release-please.yml +18 -0
  5. package/.gitmodules +1 -0
  6. package/.husky/pre-commit +1 -0
  7. package/.nvmrc +1 -0
  8. package/.prettierrc.cjs +9 -1
  9. package/.release-please-manifest.json +1 -0
  10. package/CHANGELOG.md +592 -0
  11. package/CODEOWNERS +1 -0
  12. package/README.md +0 -2
  13. package/build/cjs/flagsmith-engine/environments/models.d.ts +2 -1
  14. package/build/cjs/flagsmith-engine/environments/models.js +3 -1
  15. package/build/cjs/flagsmith-engine/environments/util.js +1 -1
  16. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/evaluationContext.types.d.ts +230 -0
  17. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/evaluationContext.types.js +8 -0
  18. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/mappers.d.ts +5 -0
  19. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/mappers.js +156 -0
  20. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/types.d.ts +216 -0
  21. package/build/cjs/flagsmith-engine/evaluation/evaluationContext/types.js +8 -0
  22. package/build/cjs/flagsmith-engine/evaluation/evaluationResult/evaluationResult.types.d.ts +68 -0
  23. package/build/cjs/flagsmith-engine/evaluation/evaluationResult/evaluationResult.types.js +8 -0
  24. package/build/cjs/flagsmith-engine/evaluation/models.d.ts +50 -0
  25. package/build/cjs/flagsmith-engine/evaluation/models.js +26 -0
  26. package/build/cjs/flagsmith-engine/features/models.js +1 -1
  27. package/build/cjs/flagsmith-engine/features/types.d.ts +5 -0
  28. package/build/cjs/flagsmith-engine/features/types.js +9 -0
  29. package/build/cjs/flagsmith-engine/features/util.d.ts +1 -0
  30. package/build/cjs/flagsmith-engine/features/util.js +5 -1
  31. package/build/cjs/flagsmith-engine/index.d.ts +61 -9
  32. package/build/cjs/flagsmith-engine/index.js +176 -56
  33. package/build/cjs/flagsmith-engine/segments/constants.d.ts +1 -0
  34. package/build/cjs/flagsmith-engine/segments/constants.js +2 -1
  35. package/build/cjs/flagsmith-engine/segments/evaluators.d.ts +41 -7
  36. package/build/cjs/flagsmith-engine/segments/evaluators.js +136 -24
  37. package/build/cjs/flagsmith-engine/segments/models.d.ts +9 -4
  38. package/build/cjs/flagsmith-engine/segments/models.js +115 -13
  39. package/build/cjs/flagsmith-engine/utils/hashing/index.d.ts +1 -1
  40. package/build/cjs/flagsmith-engine/utils/hashing/index.js +4 -4
  41. package/build/cjs/sdk/analytics.js +3 -1
  42. package/build/cjs/sdk/index.d.ts +1 -3
  43. package/build/cjs/sdk/index.js +63 -24
  44. package/build/cjs/sdk/models.d.ts +8 -1
  45. package/build/cjs/sdk/models.js +29 -1
  46. package/build/cjs/sdk/utils.d.ts +1 -0
  47. package/build/cjs/sdk/utils.js +14 -1
  48. package/build/esm/flagsmith-engine/environments/models.d.ts +2 -1
  49. package/build/esm/flagsmith-engine/environments/models.js +3 -1
  50. package/build/esm/flagsmith-engine/environments/util.js +1 -1
  51. package/build/esm/flagsmith-engine/evaluation/evaluationContext/evaluationContext.types.d.ts +230 -0
  52. package/build/esm/flagsmith-engine/evaluation/evaluationContext/evaluationContext.types.js +7 -0
  53. package/build/esm/flagsmith-engine/evaluation/evaluationContext/mappers.d.ts +5 -0
  54. package/build/esm/flagsmith-engine/evaluation/evaluationContext/mappers.js +152 -0
  55. package/build/esm/flagsmith-engine/evaluation/evaluationContext/types.d.ts +216 -0
  56. package/build/esm/flagsmith-engine/evaluation/evaluationContext/types.js +7 -0
  57. package/build/esm/flagsmith-engine/evaluation/evaluationResult/evaluationResult.types.d.ts +68 -0
  58. package/build/esm/flagsmith-engine/evaluation/evaluationResult/evaluationResult.types.js +7 -0
  59. package/build/esm/flagsmith-engine/evaluation/models.d.ts +50 -0
  60. package/build/esm/flagsmith-engine/evaluation/models.js +9 -0
  61. package/build/esm/flagsmith-engine/features/models.js +2 -2
  62. package/build/esm/flagsmith-engine/features/types.d.ts +5 -0
  63. package/build/esm/flagsmith-engine/features/types.js +6 -0
  64. package/build/esm/flagsmith-engine/features/util.d.ts +1 -0
  65. package/build/esm/flagsmith-engine/features/util.js +3 -0
  66. package/build/esm/flagsmith-engine/index.d.ts +61 -9
  67. package/build/esm/flagsmith-engine/index.js +161 -43
  68. package/build/esm/flagsmith-engine/segments/constants.d.ts +1 -0
  69. package/build/esm/flagsmith-engine/segments/constants.js +1 -0
  70. package/build/esm/flagsmith-engine/segments/evaluators.d.ts +41 -7
  71. package/build/esm/flagsmith-engine/segments/evaluators.js +137 -25
  72. package/build/esm/flagsmith-engine/segments/models.d.ts +9 -4
  73. package/build/esm/flagsmith-engine/segments/models.js +115 -13
  74. package/build/esm/flagsmith-engine/utils/hashing/index.d.ts +1 -1
  75. package/build/esm/flagsmith-engine/utils/hashing/index.js +2 -2
  76. package/build/esm/sdk/analytics.js +3 -1
  77. package/build/esm/sdk/index.d.ts +1 -3
  78. package/build/esm/sdk/index.js +63 -24
  79. package/build/esm/sdk/models.d.ts +8 -1
  80. package/build/esm/sdk/models.js +29 -1
  81. package/build/esm/sdk/utils.d.ts +1 -0
  82. package/build/esm/sdk/utils.js +12 -0
  83. package/flagsmith-engine/environments/models.ts +3 -1
  84. package/flagsmith-engine/environments/util.ts +2 -1
  85. package/flagsmith-engine/evaluation/evaluationContext/evaluationContext.types.ts +247 -0
  86. package/flagsmith-engine/evaluation/evaluationContext/mappers.ts +204 -0
  87. package/flagsmith-engine/evaluation/evaluationContext/types.ts +233 -0
  88. package/flagsmith-engine/evaluation/evaluationResult/evaluationResult.types.ts +71 -0
  89. package/flagsmith-engine/evaluation/models.ts +96 -0
  90. package/flagsmith-engine/features/models.ts +3 -2
  91. package/flagsmith-engine/features/types.ts +5 -0
  92. package/flagsmith-engine/features/util.ts +4 -0
  93. package/flagsmith-engine/index.ts +229 -72
  94. package/flagsmith-engine/segments/constants.ts +1 -0
  95. package/flagsmith-engine/segments/evaluators.ts +178 -62
  96. package/flagsmith-engine/segments/models.ts +171 -23
  97. package/flagsmith-engine/utils/hashing/index.ts +2 -2
  98. package/package.json +13 -2
  99. package/release-please-config.json +62 -0
  100. package/sdk/analytics.ts +3 -1
  101. package/sdk/index.ts +89 -30
  102. package/sdk/models.ts +44 -2
  103. package/sdk/utils.ts +13 -0
  104. package/tests/engine/e2e/engine.test.ts +43 -38
  105. package/tests/engine/unit/engine.test.ts +306 -60
  106. package/tests/engine/unit/mappers.test.ts +353 -0
  107. package/tests/engine/unit/segments/segment_evaluators.test.ts +391 -49
  108. package/tests/engine/unit/segments/segments_model.test.ts +85 -0
  109. package/tests/engine/unit/utils/utils.test.ts +7 -7
  110. package/tests/engine/unit/utils.ts +1 -1
  111. package/tests/sdk/analytics.test.ts +6 -1
  112. package/tests/sdk/data/environment.json +1 -0
  113. package/tests/sdk/flagsmith-environment-flags.test.ts +28 -0
  114. package/tests/sdk/flagsmith-identity-flags.test.ts +11 -2
  115. package/tests/sdk/flagsmith.test.ts +190 -3
  116. package/tests/sdk/offline-handlers.test.ts +3 -1
  117. package/vitest.config.esm.ts +34 -0
@@ -0,0 +1,29 @@
1
+ name: Conventional Commit
2
+
3
+ on:
4
+ pull_request:
5
+ types:
6
+ - edited
7
+ - opened
8
+
9
+ jobs:
10
+ conventional-commit:
11
+ name: Conventional Commit
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Check PR Conventional Commit title
15
+ uses: amannn/action-semantic-pull-request@v5
16
+ env:
17
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18
+ with:
19
+ types: | # mirrors changelog-sections in the /release-please-config.json
20
+ feat
21
+ fix
22
+ infra
23
+ ci
24
+ docs
25
+ deps
26
+ perf
27
+ refactor
28
+ test
29
+ chore
@@ -1,25 +1,28 @@
1
1
  name: Publish NPM Package
2
2
 
3
3
  on:
4
- push:
5
- tags:
6
- - '*'
4
+ push:
5
+ tags:
6
+ - '*'
7
+
8
+ permissions:
9
+ id-token: write # Required for OIDC
10
+ contents: read
7
11
 
8
12
  jobs:
9
- package:
10
- runs-on: ubuntu-latest
11
- name: Publish NPM Package
13
+ package:
14
+ runs-on: ubuntu-latest
15
+ name: Publish NPM Package
12
16
 
13
- steps:
14
- - name: Cloning repo
15
- uses: actions/checkout@v3
17
+ steps:
18
+ - name: Cloning repo
19
+ uses: actions/checkout@v5
16
20
 
17
- - uses: actions/setup-node@v4
18
- with:
19
- node-version: '18.x'
20
- registry-url: 'https://registry.npmjs.org'
21
+ - uses: actions/setup-node@v5
22
+ with:
23
+ node-version-file: .nvmrc
24
+ registry-url: 'https://registry.npmjs.org'
21
25
 
22
- - run: npm ci
23
- - run: npm run deploy
24
- env:
25
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
26
+ - run: npm install -g npm@latest
27
+ - run: npm ci
28
+ - run: npm run deploy
@@ -1,37 +1,40 @@
1
1
  name: Unit/Integration Tests
2
2
 
3
3
  on:
4
- pull_request:
5
- types:
6
- - opened
7
- - synchronize
8
- - reopened
9
- - ready_for_review
10
- push:
11
- branches:
12
- - main
4
+ pull_request:
5
+ types:
6
+ - opened
7
+ - synchronize
8
+ - reopened
9
+ - ready_for_review
10
+ push:
11
+ branches:
12
+ - main
13
13
  jobs:
14
- build-and-test:
15
- strategy:
16
- matrix:
17
- node-version: [18.x, 20.x, 22.x]
18
- runs-on: ubuntu-latest
19
- steps:
20
- - uses: actions/checkout@v4
21
- with:
22
- submodules: true
23
- - uses: actions/setup-node@v4
24
- with:
25
- node-version: '${{ matrix.node-version }}'
26
- - name: cache node modules
27
- uses: actions/cache@v4
28
- with:
29
- path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
30
- key: npm-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
31
- restore-keys: |
32
- npm-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
33
- npm-
34
- - run: npm ci
35
- - run: npm test
36
- env:
37
- CI: true
14
+ build-and-test:
15
+ strategy:
16
+ matrix:
17
+ node-version: [18.x, 20.x, 22.x]
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ submodules: true
23
+ - uses: actions/setup-node@v4
24
+ with:
25
+ node-version: '${{ matrix.node-version }}'
26
+ - name: cache node modules
27
+ uses: actions/cache@v4
28
+ with:
29
+ path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
30
+ key: npm-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
31
+ restore-keys: |
32
+ npm-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
33
+ npm-
34
+ - run: npm ci
35
+ - run: npm test
36
+ env:
37
+ CI: true
38
+ - run: npm run test:esm-build
39
+ env:
40
+ CI: true
@@ -0,0 +1,18 @@
1
+ name: Update release PR
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ release-please:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: googleapis/release-please-action@v4
17
+ with:
18
+ token: ${{ secrets.RELEASE_PLEASE_GITHUB_TOKEN }}
package/.gitmodules CHANGED
@@ -1,3 +1,4 @@
1
1
  [submodule "tests/engine/engine-tests/engine-test-data"]
2
2
  path = tests/engine/engine-tests/engine-test-data
3
3
  url = git@github.com:Flagsmith/engine-test-data.git
4
+ branch = v3.5.0
package/.husky/pre-commit CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/bin/sh
2
2
  . "$(dirname "$0")/_/husky.sh"
3
3
 
4
+ npm run generate-engine-types
4
5
  npm run lint
5
6
  git add ./flagsmith-engine ./sdk ./tests ./index.ts ./.github
6
7
  npm run test
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 24
package/.prettierrc.cjs CHANGED
@@ -5,5 +5,13 @@ module.exports = {
5
5
  tabWidth: 4,
6
6
  trailingComma: 'none',
7
7
  useTabs: false,
8
- arrowParens: 'avoid'
8
+ arrowParens: 'avoid',
9
+ overrides: [
10
+ {
11
+ files: ['*.yml', '*.yaml'],
12
+ options: {
13
+ tabWidth: 2
14
+ }
15
+ }
16
+ ]
9
17
  };
@@ -0,0 +1 @@
1
+ {".":"7.0.2"}