rb-homer 1.9.0-beta.4 → 1.9.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 (50) hide show
  1. package/check-malicious-packages.js +570 -570
  2. package/index.js +2 -0
  3. package/package.json +1 -1
  4. package/src/compile.js +34 -34
  5. package/src/createTemplate.js +54 -54
  6. package/src/extract.js +429 -429
  7. package/src/findFiles.js +30 -30
  8. package/src/generator/script.js +416 -416
  9. package/src/generator/server.js +2 -2
  10. package/src/generator/templates/gridBasic.html +7 -7
  11. package/src/generator/view.html +173 -173
  12. package/src/login.html +54 -54
  13. package/src/makeNewVersion.js +100 -100
  14. package/src/rb.d.ts +378 -378
  15. package/src/synchronizeREX2.js +184 -184
  16. package/src/walk.js +28 -28
  17. package/templates/VUE/README.md +486 -486
  18. package/templates/VUE/component/component.vue +12 -12
  19. package/templates/VUE/component/css/style.css +3 -3
  20. package/templates/VUE/component/main.ts +3 -3
  21. package/templates/VUE/component/rambase.ts +28 -28
  22. package/templates/VUE/component/viewModels/controller.ts +34 -34
  23. package/templates/VUE/component/views/view.html +8 -8
  24. package/templates/VUE/component/vue-shims.d.ts +3 -3
  25. package/templates/VUE/componentservice.ts +296 -296
  26. package/templates/VUE/config.ts +11 -11
  27. package/templates/VUE/package-lock.json +4870 -4870
  28. package/templates/VUE/package.json +30 -30
  29. package/templates/VUE/tsconfig.json +14 -14
  30. package/templates/VUE/tslint.json +22 -22
  31. package/templates/VUE/webpack.config.js +94 -94
  32. package/templates/VUE/webpackCompilePlugin.js +34 -34
  33. package/templates/VUE/yarn.lock +2644 -2644
  34. package/templates/app/CSS/style.less +2 -2
  35. package/templates/app/Views/view.html +2 -2
  36. package/templates/app/config.ts +11 -11
  37. package/templates/function/ViewModels/viewController.ts +1 -1
  38. package/templates/function/config.ts +9 -9
  39. package/templates/lookup/ViewModels/viewController.ts +21 -21
  40. package/templates/lookup/Views/view.html +25 -25
  41. package/templates/lookup/config.ts +11 -11
  42. package/templates/rbclass/ViewModels/viewController.ts +7 -7
  43. package/templates/rbclass/config.ts +5 -5
  44. package/templates/resourcemodules.js +21 -21
  45. package/templates/rex2/rex-project/package.json +16 -16
  46. package/templates/snippets/html.json +337 -337
  47. package/templates/snippets/typescript.json +184 -184
  48. package/templates/widget/ViewModels/viewController.ts +1 -1
  49. package/templates/widget/Views/view.html +5 -5
  50. package/templates/widget/config.ts +9 -9
@@ -1,570 +1,570 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const suspiciousPackages = [
5
- // asyncapi
6
- '@asyncapi/diff',
7
- '@asyncapi/nodejs-ws-template',
8
- 'go-template',
9
- '@asyncapi/avro-schema-parser',
10
- '@asyncapi/converter',
11
- '@asyncapi/dotnet-rabbitmq-template',
12
- '@asyncapi/nunjucks-filters',
13
- '@asyncapi/protobuf-schema-parser',
14
- '@asyncapi/problem',
15
- '@asyncapi/optimizer',
16
- '@asyncapi/python-paho-template',
17
- '@asyncapi/multi-parser',
18
- '@asyncapi/bundler',
19
- '@asyncapi/php-template',
20
- 'asyncapi-preview',
21
- '@asyncapi/java-spring-cloud-stream-template',
22
- '@asyncapi/modelina-cli',
23
- '@asyncapi/generator-helpers',
24
- '@asyncapi/java-template',
25
- '@asyncapi/react-component',
26
- '@asyncapi/generator',
27
- '@asyncapi/server-api',
28
- '@asyncapi/java-spring-template',
29
- '@asyncapi/cli',
30
- '@asyncapi/web-component',
31
- '@asyncapi/specs',
32
- '@asyncapi/modelina',
33
- '@asyncapi/parser',
34
- '@asyncapi/html-template',
35
- '@asyncapi/go-watermill-template',
36
- '@asyncapi/openapi-schema-parser',
37
- '@asyncapi/edavisualiser',
38
- '@asyncapi/generator-components',
39
- 'dotnet-template',
40
- '@asyncapi/keeper',
41
- 'github-action-for-generator',
42
- '@asyncapi/nodejs-template',
43
- '@asyncapi/markdown-template',
44
- 'test23112222-api',
45
- '@asyncapi/generator-react-sdk',
46
- '@quick-start-soft/quick-markdown-compose',
47
- 'iron-shield-miniapp',
48
- 'manual-billing-system-miniapp-api',
49
- 'shinhan-limit-scrap',
50
- '@strapbuild/react-native-perspective-image-cropper',
51
- 'react-native-use-modal',
52
- '@quick-start-soft/quick-task-refine',
53
- '@strapbuild/react-native-date-time-picker',
54
- '@strapbuild/react-native-perspective-image-cropper-2',
55
- 'create-glee-app',
56
- '@strapbuild/react-native-perspective-image-cropper-poojan31',
57
- '@asyncapi/studio',
58
- '@quick-start-soft/quick-markdown-print',
59
- '@quick-start-soft/quick-remove-image-background',
60
- 'eslint-config-zeallat-base',
61
- 'korea-administrative-area-geo-json-util',
62
- '@quick-start-soft/quick-document-translator',
63
- 'axios-builder',
64
-
65
- // posthog
66
- 'posthog-node',
67
- '@posthog/first-time-event-tracker',
68
- '@posthog/event-sequence-timer-plugin',
69
- '@posthog/gitub-star-sync-plugin',
70
- 'posthog-plugin-hello-world',
71
- '@posthog/bitbucket-release-tracker',
72
- '@posthog/maxmind-plugin',
73
- '@posthog/postgres-plugin',
74
- '@posthog/twilio-plugin',
75
- '@posthog/cli',
76
- '@posthog/clickhouse',
77
- '@posthog/snowflake-export-plugin',
78
- 'posthog-react-native-session-replay',
79
- '@posthog/drop-events-on-property-plugin',
80
- '@posthog/github-release-tracking-plugin',
81
- '@posthog/icons',
82
- '@posthog/geoip-plugin',
83
- '@posthog/intercom-plugin',
84
- '@posthog/plugin-unduplicates',
85
- '@posthog/react-rrweb-player',
86
- 'drop-events-on-property-plugin',
87
- '@posthog/ingestion-alert-plugin',
88
- '@posthog/kinesis-plugin',
89
- '@posthog/laudspeaker-plugin',
90
- '@posthog/nextjs',
91
- '@posthog/nextjs-config',
92
- '@posthog/automatic-cohorts-plugin',
93
- '@posthog/migrator3000-plugin',
94
- '@posthog/pagerduty-plugin',
95
- '@posthog/plugin-contrib',
96
- '@posthog/sendgrid-plugin',
97
- '@posthog/customerio-plugin',
98
- '@posthog/rrweb-utils',
99
- '@posthog/taxonomy-plugin',
100
- '@posthog/zendesk-plugin',
101
- '@posthog/netdata-event-processing',
102
- '@posthog/url-normalizer-plugin',
103
- 'posthog-docusaurus',
104
- '@posthog/currency-normalization-plugin',
105
- '@posthog/filter-out-plugin',
106
- '@posthog/heartbeat-plugin',
107
- '@actbase/react-native-fast-image',
108
- '@posthog/ai',
109
- '@posthog/databricks-plugin',
110
- '@actbase/react-native-kakao-channel',
111
- 'calc-loan-interest',
112
- '@actbase/react-absolute',
113
- '@actbase/react-daum-postcode',
114
- '@actbase/react-native-simple-video',
115
- '@posthog/core',
116
- '@posthog/lemon-ui',
117
- '@seung-ju/next',
118
- '@seung-ju/react-hooks',
119
- 'posthog-react-native',
120
- '@actbase/css-to-react-native-transform',
121
- '@actbase/react-native-actionsheet',
122
- '@actbase/react-native-tiktok',
123
- '@seung-ju/react-native-action-sheet',
124
- '@actbase/react-kakaosdk',
125
- '@posthog/agent',
126
- '@posthog/variance-plugin',
127
- 'discord-bot-server',
128
- '@posthog/rrweb-replay',
129
- '@posthog/rrweb-snapshot',
130
- '@actbase/node-server',
131
- '@actbase/react-native-devtools',
132
- '@posthog/plugin-server',
133
- '@posthog/rrweb-record',
134
- '@actbase/native',
135
- '@actbase/react-native-less-transformer',
136
- '@posthog/rrweb',
137
- 'posthog-js',
138
- '@posthog/web-dev-server',
139
- '@posthog/piscina',
140
- '@posthog/nuxt',
141
- '@posthog/rrweb-player',
142
- '@posthog/wizard',
143
- '@actbase/react-native-kakao-navi',
144
- '@posthog/siphash',
145
- '@posthog/twitter-followers-plugin',
146
- '@actbase/react-native-naver-login',
147
- '@seung-ju/openapi-generator',
148
- '@posthog/rrdom',
149
- '@posthog/hedgehog-mode',
150
- 'react-native-worklet-functions',
151
- 'expo-audio-session',
152
- 'poper-react-sdk',
153
-
154
- // postman
155
- '@postman/secret-scanner-wasm',
156
- '@postman/csv-parse',
157
- '@postman/node-keytar',
158
- '@postman/tunnel-agent',
159
- '@postman/pm-bin-macos-arm64',
160
- '@postman/pm-bin-linux-x64',
161
- '@postman/postman-collection-fork',
162
- '@postman/postman-mcp-server',
163
- '@postman/wdio-junit-reporter',
164
- '@postman/aether-icons',
165
- '@postman/postman-mcp-cli',
166
- '@postman/pretty-ms',
167
- '@postman/pm-bin-windows-x64',
168
- '@postman/wdio-allure-reporter',
169
- '@postman/final-node-keytar',
170
- '@postman/pm-bin-macos-x64',
171
-
172
- // diverse småpakker
173
- '@aryanhussain/my-angular-lib',
174
- 'capacitor-plugin-apptrackingios',
175
- 'capacitor-plugin-purchase',
176
- 'capacitor-purchase-history',
177
- 'capacitor-voice-recorder-wav',
178
- 'scgs-capacitor-subscribe',
179
- '@postman/mcp-ui-client',
180
- 'capacitor-plugin-scgssigninwithgoogle',
181
-
182
- // kvytech / medusa
183
- '@kvytech/medusa-plugin-announcement',
184
- '@kvytech/medusa-plugin-product-reviews',
185
- 'medusa-plugin-zalopay',
186
- 'scgsffcreator',
187
- '@kvytech/habbit-e2e-test',
188
- 'medusa-plugin-logs',
189
- 'medusa-plugin-product-reviews-kvy',
190
- '@kvytech/medusa-plugin-promotion',
191
- 'medusa-plugin-momo',
192
- '@kvytech/components',
193
- 'medusa-plugin-announcement',
194
- '@kvytech/cli',
195
- '@kvytech/medusa-plugin-newsletter',
196
- '@kvytech/medusa-plugin-management',
197
- '@kvytech/web',
198
-
199
- // hardhat / evm / vite
200
- 'create-hardhat3-app',
201
- 'test-hardhat-app',
202
- 'evm-checkcode-cli',
203
- 'gate-evm-tools-test',
204
- 'gate-evm-check-code2',
205
- 'web-types-htmx',
206
- 'test-foundry-app',
207
- 'web-types-lit',
208
- 'bun-plugin-httpfile',
209
- 'open2internet',
210
- 'vite-plugin-httpfile',
211
-
212
- // ENS / ENS domains
213
- '@ensdomains/vite-plugin-i18next-loader',
214
- '@ensdomains/blacklist',
215
- '@ensdomains/durin',
216
- '@ensdomains/renewal',
217
- '@ensdomains/cypress-metamask',
218
- 'bytecode-checker-cli',
219
- '@ensdomains/dnsprovejs',
220
- '@ensdomains/ccip-read-dns-gateway',
221
- '@ensdomains/ccip-read-cf-worker',
222
- '@ensdomains/dnssec-oracle-anchors',
223
- '@ensdomains/reverse-records',
224
- '@ensdomains/ens-test-env',
225
- '@ensdomains/hackathon-registrar',
226
- '@ensdomains/renewal-widget',
227
- 'crypto-addr-codec',
228
- '@ensdomains/solsha1',
229
- '@ensdomains/server-analytics',
230
- '@ensdomains/ui',
231
- '@ensdomains/test-utils',
232
- '@ensdomains/mock',
233
- '@ensdomains/ccip-read-router',
234
- '@zapier/babel-preset-zapier', // zapier, men holder den her for oversikt
235
- '@ensdomains/hardhat-chai-matchers-viem',
236
- '@ensdomains/ccip-read-worker-viem',
237
- '@zapier/browserslist-config-zapier',
238
- '@zapier/zapier-sdk',
239
- '@zapier/stubtree',
240
- 'zapier-async-storage',
241
- '@zapier/ai-actions',
242
- '@zapier/mcp-integration',
243
- '@zapier/spectral-api-ruleset',
244
- '@ensdomains/address-encoder',
245
- 'redux-router-kit',
246
- '@ensdomains/eth-ens-namehash',
247
- 'zapier-scripts',
248
- '@ensdomains/buffer',
249
- '@ensdomains/thorin',
250
- 'zapier-platform-legacy-scripting-runner',
251
- 'zapier-platform-schema',
252
- '@ensdomains/dnssecoraclejs',
253
- 'zapier-platform-core',
254
- '@ensdomains/op-resolver-contracts',
255
- '@ensdomains/ens-archived-contracts',
256
- '@ensdomains/ensjs',
257
- '@ensdomains/subdomain-registrar',
258
- '@ensdomains/unruggable-gateways',
259
- '@ensdomains/web3modal',
260
- 'zapier-platform-cli',
261
- '@ensdomains/ens-contracts',
262
- '@ensdomains/react-ens-address',
263
- '@ensdomains/curvearithmetics',
264
- '@zapier/secret-scrubber',
265
- '@ensdomains/hardhat-toolbox-viem-extended',
266
- 'ethereum-ens',
267
- '@ensdomains/durin-middleware',
268
- '@ensdomains/unicode-confusables',
269
- '@ensdomains/ensjs-react',
270
- '@ensdomains/content-hash',
271
- '@ensdomains/ens-avatar',
272
- '@zapier/ai-actions-react',
273
- '@zapier/eslint-plugin-zapier',
274
- '@ensdomains/offchain-resolver-contracts',
275
- '@ensdomains/ens-validation',
276
- '@ensdomains/name-wrapper',
277
-
278
- // diverse mcp / n8n / osv
279
- '@hapheus/n8n-nodes-pgp',
280
- '@markvivanco/app-version-checker',
281
- 'claude-token-updater',
282
- 'n8n-nodes-tmdb',
283
- 'devstart-cli',
284
- 'skills-use',
285
- '@mcp-use/inspector',
286
- 'zuper-sdk',
287
- 'zuper-stream',
288
- '@mcp-use/mcp-use',
289
- 'create-mcp-use-app',
290
- 'mcp-use',
291
- '@mcp-use/cli',
292
- 'zuper-cli',
293
- '@caretive/caret-cli',
294
- 'cpu-instructions',
295
- 'lite-serper-mcp-server',
296
- '@louisle2/core',
297
- 'jan-browser',
298
- 'exact-ticker',
299
- 'react-library-setup',
300
- 'orbit-soap',
301
- '@orbitgtbelgium/mapbox-gl-draw-scale-rotate-mode',
302
- 'token.js-fork',
303
- 'react-component-taggers',
304
- '@louisle2/cortex-js',
305
- 'orbit-nebula-editor',
306
- '@trigo/pathfinder-ui-css',
307
- '@trigo/jsdt',
308
- '@trigo/atrix-redis',
309
- '@trigo/eslint-config-trigo',
310
- '@trigo/atrix-orientdb',
311
- '@trigo/node-soap',
312
- 'eslint-config-trigo',
313
- '@trigo/bool-expressions',
314
- '@trigo/atrix-pubsub',
315
- '@trigo/atrix-elasticsearch',
316
- '@trigo/hapi-auth-signedlink',
317
- '@trigo/keycloak-api',
318
- '@trigo/atrix-soap',
319
- '@trigo/atrix-swagger',
320
- '@trigo/atrix-acl',
321
- 'atrix',
322
- 'redux-forge',
323
- '@trigo/atrix-mongoose',
324
- '@trigo/atrix',
325
- 'orbit-boxicons',
326
- 'atrix-mongoose',
327
- 'bool-expressions',
328
- 'react-element-prompt-inspector',
329
- 'trigo-react-app',
330
- '@trigo/trigo-hapijs',
331
- '@trigo/fsm',
332
- 'command-irail',
333
- '@orbitgtbelgium/mapbox-gl-draw-cut-polygon-mode',
334
- '@trigo/atrix-postgres',
335
- '@orbitgtbelgium/time-slider',
336
- '@orbitgtbelgium/orbit-components',
337
- 'orbit-nebula-draw-tools',
338
- 'typeorm-orbit',
339
- '@mparpaillon/connector-parse',
340
- '@mparpaillon/imagesloaded',
341
- '@commute/market-data',
342
- 'gitsafe',
343
- '@osmanekrem/error-handler',
344
- '@commute/bloom',
345
-
346
- // masse små libs (angular, react, cli, osv.)
347
- 'okta-react-router-6',
348
- 'designstudiouiux',
349
- 'itobuz-angular',
350
- '@ifelsedeveloper/protocol-contracts-svm-idl',
351
- 'ito-button',
352
- '@dev-blinq/cucumber_client',
353
- 'blinqio-executions-cli',
354
- 'itobuz-angular-auth',
355
- '@dev-blinq/ai-qa-logic',
356
- 'axios-timed',
357
- 'react-native-email',
358
- 'tenacious-fetch',
359
- 'kill-port',
360
- 'jacob-zuma',
361
- 'luno-api',
362
- '@lessondesk/eslint-config',
363
- 'sort-by-distance',
364
- 'just-toasty',
365
- 'image-to-uri',
366
- 'react-native-phone-call',
367
- 'formik-error-focus',
368
- 'jquery-bindings',
369
- '@lessondesk/babel-preset',
370
- 'barebones-css',
371
- 'coinmarketcap-api',
372
- 'license-o-matic',
373
- '@varsityvibe/api-client',
374
- 'pico-uid',
375
- 'hyperterm-hipster',
376
- 'set-nested-prop',
377
- 'bytes-to-x',
378
- 'enforce-branch-name',
379
- 'fittxt',
380
- 'get-them-args',
381
- 'react-native-retriable-fetch',
382
- 'svelte-autocomplete-select',
383
- 'feature-flip',
384
- 'lint-staged-imagemin',
385
- 'react-native-view-finder',
386
- 'formik-store',
387
- 'shell-exec',
388
- 'react-native-log-level',
389
- '@everreal/web-analytics',
390
- 'react-native-jam-icons',
391
- '@thedelta/eslint-config',
392
- 'parcel-plugin-asset-copier',
393
- 'react-native-websocket',
394
- 'ra-data-firebase',
395
- 'react-jam-icons',
396
- 'react-native-fetch',
397
- '@ifings/design-system',
398
- 'gatsby-plugin-cname',
399
- '@alexcolls/nuxt-ux',
400
- 'react-native-datepicker-modal',
401
- 'undefsafe-typed',
402
- 'chrome-extension-downloads',
403
- '@alexcolls/nuxt-socket.io',
404
- 'fuzzy-finder',
405
- 'sa-company-registration-number-regex',
406
- 'flapstacks',
407
- 'react-keycloak-context',
408
- 'react-qr-image',
409
- '@tiaanduplessis/react-progressbar',
410
- '@lessondesk/schoolbus',
411
- '@tiaanduplessis/json',
412
- 'react-native-get-pixel-dimensions',
413
- 'nanoreset',
414
- 'next-circular-dependency',
415
- 'url-encode-decode',
416
- 'axios-cancelable',
417
- 'compare-obj',
418
- 'wenk',
419
- 'haufe-axera-api-client',
420
- 'obj-to-css',
421
- 'sa-id-gen',
422
- '@lessondesk/api-client',
423
- '@varsityvibe/validation-schemas',
424
- 'flatten-unflatten',
425
- 'stoor',
426
- '@clausehq/flows-step-jsontoxml',
427
- '@accordproject/concerto-analysis',
428
- 'hope-mapboxdraw',
429
- 'count-it-down',
430
- 'hopedraw',
431
- '@accordproject/markdown-it-cicero',
432
- 'piclite',
433
- '@fishingbooker/react-swiper',
434
- '@fishingbooker/browser-sync-plugin',
435
- 'generator-meteor-stock',
436
- '@fishingbooker/react-loader',
437
- 'benmostyn-frame-print',
438
- '@fishingbooker/react-pagination',
439
-
440
- // voiceflow
441
- '@voiceflow/anthropic',
442
- '@voiceflow/voice-types',
443
- '@voiceflow/default-prompt-wrappers',
444
- '@voiceflow/npm-package-json-lint-config',
445
- '@voiceflow/nestjs-mongodb',
446
- '@voiceflow/tsconfig',
447
- '@voiceflow/test-common',
448
- '@voiceflow/husky-config',
449
- '@voiceflow/commitlint-config',
450
- '@voiceflow/git-branch-check',
451
- 'normal-store',
452
- '@voiceflow/prettier-config',
453
- '@voiceflow/stylelint-config',
454
- 'vf-oss-template',
455
- '@voiceflow/storybook-config',
456
- '@voiceflow/verror',
457
- '@voiceflow/alexa-types',
458
- '@voiceflow/nestjs-timeout',
459
- '@voiceflow/serverless-plugin-typescript',
460
- '@voiceflow/voiceflow-types',
461
- 'shelf-jwt-sessions',
462
- '@hover-design/react',
463
- '@voiceflow/base-types',
464
- '@voiceflow/eslint-config',
465
- '@voiceflow/fetch',
466
- '@voiceflow/common',
467
- '@voiceflow/eslint-plugin',
468
- '@voiceflow/exception',
469
- '@voiceflow/dtos-interact',
470
- '@voiceflow/google-types',
471
- '@voiceflow/nestjs-common',
472
- '@voiceflow/pino',
473
- '@voiceflow/sdk-runtime',
474
- '@voiceflow/nestjs-rate-limit',
475
- '@voiceflow/openai',
476
- 'dialogflow-es',
477
- '@voiceflow/widget',
478
- 'arc-cli-fc',
479
- 'composite-reducer',
480
- 'bidirectional-adapter',
481
- '@antstackio/express-graphql-proxy',
482
- '@antstackio/json-to-graphql',
483
- '@voiceflow/body-parser',
484
- '@voiceflow/logger',
485
- '@antstackio/eslint-config-antstack',
486
- '@voiceflow/vitest-config',
487
- '@faq-component/core',
488
- '@pruthvi21/use-debounce',
489
- '@voiceflow/api-sdk',
490
- '@hover-design/core',
491
- '@faq-component/react',
492
- '@voiceflow/semantic-release-config',
493
- '@voiceflow/vite-config',
494
- '@voiceflow/circleci-config-sdk-orb-import',
495
- '@voiceflow/backend-utils',
496
- '@voiceflow/slate-serializer',
497
- '@voiceflow/google-dfes-types',
498
- 'n8n-nodes-viral-app',
499
- '@accordproject/markdown-docx',
500
- '@clausehq/flows-step-sendgridemail',
501
- '@lpdjs/firestore-repo-service',
502
- '@trefox/sleekshop-js',
503
- 'invo',
504
- 'jsonsurge',
505
- 'mon-package-react-typescript',
506
- 'rediff',
507
- 'solomon-api-stories',
508
- 'solomon-v3-stories',
509
- 'solomon-v3-ui-wrapper',
510
- 'tcsp-draw-test',
511
- 'uplandui',
512
- ];
513
-
514
- function checkFile(filePath) {
515
- if (!fs.existsSync(filePath)) {
516
- console.log(`Ingen fil: ${filePath}`);
517
- return;
518
- }
519
-
520
- const json = JSON.parse(fs.readFileSync(filePath, 'utf8'));
521
- const packages = json.packages || {};
522
-
523
- const hits = [];
524
-
525
- for (const pkgPath of Object.keys(packages)) {
526
- const pkg = packages[pkgPath];
527
-
528
- // Finn navn:
529
- // 1) Bruk pkg.name hvis det finnes (root)
530
- // 2) Ellers hent det ut fra node_modules-stien
531
- let name = pkg.name;
532
- if (!name) {
533
- if (pkgPath === '') {
534
- // root – prøv å hente fra shrinkwrap.name om det finnes
535
- name = json.name || undefined;
536
- } else {
537
- const marker = 'node_modules/';
538
- const idx = pkgPath.lastIndexOf(marker);
539
- if (idx >= 0) {
540
- name = pkgPath.slice(idx + marker.length); // f.eks. "@posthog/ai"
541
- } else {
542
- name = pkgPath; // fallback
543
- }
544
- }
545
- }
546
-
547
- const version = pkg.version;
548
- // Debug hvis du vil se hva som faktisk sjekkes:
549
- console.log(`Sjekker pakke: ${name}`);
550
-
551
- if (!name) continue;
552
-
553
- for (const pattern of suspiciousPackages) {
554
- if (name === pattern || name.startsWith(pattern)) {
555
- hits.push({ name, version, pattern, path: pkgPath });
556
- break;
557
- }
558
- }
559
- }
560
-
561
- if (hits.length === 0) {
562
- console.log(`Ingen mistenkte pakker funnet i ${filePath}`);
563
- } else {
564
- console.log(`Fant mistenkte pakker i ${filePath}:`);
565
- console.table(hits);
566
- }
567
- }
568
-
569
-
570
- checkFile(path.resolve('npm-shrinkwrap.json'));
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const suspiciousPackages = [
5
+ // asyncapi
6
+ '@asyncapi/diff',
7
+ '@asyncapi/nodejs-ws-template',
8
+ 'go-template',
9
+ '@asyncapi/avro-schema-parser',
10
+ '@asyncapi/converter',
11
+ '@asyncapi/dotnet-rabbitmq-template',
12
+ '@asyncapi/nunjucks-filters',
13
+ '@asyncapi/protobuf-schema-parser',
14
+ '@asyncapi/problem',
15
+ '@asyncapi/optimizer',
16
+ '@asyncapi/python-paho-template',
17
+ '@asyncapi/multi-parser',
18
+ '@asyncapi/bundler',
19
+ '@asyncapi/php-template',
20
+ 'asyncapi-preview',
21
+ '@asyncapi/java-spring-cloud-stream-template',
22
+ '@asyncapi/modelina-cli',
23
+ '@asyncapi/generator-helpers',
24
+ '@asyncapi/java-template',
25
+ '@asyncapi/react-component',
26
+ '@asyncapi/generator',
27
+ '@asyncapi/server-api',
28
+ '@asyncapi/java-spring-template',
29
+ '@asyncapi/cli',
30
+ '@asyncapi/web-component',
31
+ '@asyncapi/specs',
32
+ '@asyncapi/modelina',
33
+ '@asyncapi/parser',
34
+ '@asyncapi/html-template',
35
+ '@asyncapi/go-watermill-template',
36
+ '@asyncapi/openapi-schema-parser',
37
+ '@asyncapi/edavisualiser',
38
+ '@asyncapi/generator-components',
39
+ 'dotnet-template',
40
+ '@asyncapi/keeper',
41
+ 'github-action-for-generator',
42
+ '@asyncapi/nodejs-template',
43
+ '@asyncapi/markdown-template',
44
+ 'test23112222-api',
45
+ '@asyncapi/generator-react-sdk',
46
+ '@quick-start-soft/quick-markdown-compose',
47
+ 'iron-shield-miniapp',
48
+ 'manual-billing-system-miniapp-api',
49
+ 'shinhan-limit-scrap',
50
+ '@strapbuild/react-native-perspective-image-cropper',
51
+ 'react-native-use-modal',
52
+ '@quick-start-soft/quick-task-refine',
53
+ '@strapbuild/react-native-date-time-picker',
54
+ '@strapbuild/react-native-perspective-image-cropper-2',
55
+ 'create-glee-app',
56
+ '@strapbuild/react-native-perspective-image-cropper-poojan31',
57
+ '@asyncapi/studio',
58
+ '@quick-start-soft/quick-markdown-print',
59
+ '@quick-start-soft/quick-remove-image-background',
60
+ 'eslint-config-zeallat-base',
61
+ 'korea-administrative-area-geo-json-util',
62
+ '@quick-start-soft/quick-document-translator',
63
+ 'axios-builder',
64
+
65
+ // posthog
66
+ 'posthog-node',
67
+ '@posthog/first-time-event-tracker',
68
+ '@posthog/event-sequence-timer-plugin',
69
+ '@posthog/gitub-star-sync-plugin',
70
+ 'posthog-plugin-hello-world',
71
+ '@posthog/bitbucket-release-tracker',
72
+ '@posthog/maxmind-plugin',
73
+ '@posthog/postgres-plugin',
74
+ '@posthog/twilio-plugin',
75
+ '@posthog/cli',
76
+ '@posthog/clickhouse',
77
+ '@posthog/snowflake-export-plugin',
78
+ 'posthog-react-native-session-replay',
79
+ '@posthog/drop-events-on-property-plugin',
80
+ '@posthog/github-release-tracking-plugin',
81
+ '@posthog/icons',
82
+ '@posthog/geoip-plugin',
83
+ '@posthog/intercom-plugin',
84
+ '@posthog/plugin-unduplicates',
85
+ '@posthog/react-rrweb-player',
86
+ 'drop-events-on-property-plugin',
87
+ '@posthog/ingestion-alert-plugin',
88
+ '@posthog/kinesis-plugin',
89
+ '@posthog/laudspeaker-plugin',
90
+ '@posthog/nextjs',
91
+ '@posthog/nextjs-config',
92
+ '@posthog/automatic-cohorts-plugin',
93
+ '@posthog/migrator3000-plugin',
94
+ '@posthog/pagerduty-plugin',
95
+ '@posthog/plugin-contrib',
96
+ '@posthog/sendgrid-plugin',
97
+ '@posthog/customerio-plugin',
98
+ '@posthog/rrweb-utils',
99
+ '@posthog/taxonomy-plugin',
100
+ '@posthog/zendesk-plugin',
101
+ '@posthog/netdata-event-processing',
102
+ '@posthog/url-normalizer-plugin',
103
+ 'posthog-docusaurus',
104
+ '@posthog/currency-normalization-plugin',
105
+ '@posthog/filter-out-plugin',
106
+ '@posthog/heartbeat-plugin',
107
+ '@actbase/react-native-fast-image',
108
+ '@posthog/ai',
109
+ '@posthog/databricks-plugin',
110
+ '@actbase/react-native-kakao-channel',
111
+ 'calc-loan-interest',
112
+ '@actbase/react-absolute',
113
+ '@actbase/react-daum-postcode',
114
+ '@actbase/react-native-simple-video',
115
+ '@posthog/core',
116
+ '@posthog/lemon-ui',
117
+ '@seung-ju/next',
118
+ '@seung-ju/react-hooks',
119
+ 'posthog-react-native',
120
+ '@actbase/css-to-react-native-transform',
121
+ '@actbase/react-native-actionsheet',
122
+ '@actbase/react-native-tiktok',
123
+ '@seung-ju/react-native-action-sheet',
124
+ '@actbase/react-kakaosdk',
125
+ '@posthog/agent',
126
+ '@posthog/variance-plugin',
127
+ 'discord-bot-server',
128
+ '@posthog/rrweb-replay',
129
+ '@posthog/rrweb-snapshot',
130
+ '@actbase/node-server',
131
+ '@actbase/react-native-devtools',
132
+ '@posthog/plugin-server',
133
+ '@posthog/rrweb-record',
134
+ '@actbase/native',
135
+ '@actbase/react-native-less-transformer',
136
+ '@posthog/rrweb',
137
+ 'posthog-js',
138
+ '@posthog/web-dev-server',
139
+ '@posthog/piscina',
140
+ '@posthog/nuxt',
141
+ '@posthog/rrweb-player',
142
+ '@posthog/wizard',
143
+ '@actbase/react-native-kakao-navi',
144
+ '@posthog/siphash',
145
+ '@posthog/twitter-followers-plugin',
146
+ '@actbase/react-native-naver-login',
147
+ '@seung-ju/openapi-generator',
148
+ '@posthog/rrdom',
149
+ '@posthog/hedgehog-mode',
150
+ 'react-native-worklet-functions',
151
+ 'expo-audio-session',
152
+ 'poper-react-sdk',
153
+
154
+ // postman
155
+ '@postman/secret-scanner-wasm',
156
+ '@postman/csv-parse',
157
+ '@postman/node-keytar',
158
+ '@postman/tunnel-agent',
159
+ '@postman/pm-bin-macos-arm64',
160
+ '@postman/pm-bin-linux-x64',
161
+ '@postman/postman-collection-fork',
162
+ '@postman/postman-mcp-server',
163
+ '@postman/wdio-junit-reporter',
164
+ '@postman/aether-icons',
165
+ '@postman/postman-mcp-cli',
166
+ '@postman/pretty-ms',
167
+ '@postman/pm-bin-windows-x64',
168
+ '@postman/wdio-allure-reporter',
169
+ '@postman/final-node-keytar',
170
+ '@postman/pm-bin-macos-x64',
171
+
172
+ // diverse småpakker
173
+ '@aryanhussain/my-angular-lib',
174
+ 'capacitor-plugin-apptrackingios',
175
+ 'capacitor-plugin-purchase',
176
+ 'capacitor-purchase-history',
177
+ 'capacitor-voice-recorder-wav',
178
+ 'scgs-capacitor-subscribe',
179
+ '@postman/mcp-ui-client',
180
+ 'capacitor-plugin-scgssigninwithgoogle',
181
+
182
+ // kvytech / medusa
183
+ '@kvytech/medusa-plugin-announcement',
184
+ '@kvytech/medusa-plugin-product-reviews',
185
+ 'medusa-plugin-zalopay',
186
+ 'scgsffcreator',
187
+ '@kvytech/habbit-e2e-test',
188
+ 'medusa-plugin-logs',
189
+ 'medusa-plugin-product-reviews-kvy',
190
+ '@kvytech/medusa-plugin-promotion',
191
+ 'medusa-plugin-momo',
192
+ '@kvytech/components',
193
+ 'medusa-plugin-announcement',
194
+ '@kvytech/cli',
195
+ '@kvytech/medusa-plugin-newsletter',
196
+ '@kvytech/medusa-plugin-management',
197
+ '@kvytech/web',
198
+
199
+ // hardhat / evm / vite
200
+ 'create-hardhat3-app',
201
+ 'test-hardhat-app',
202
+ 'evm-checkcode-cli',
203
+ 'gate-evm-tools-test',
204
+ 'gate-evm-check-code2',
205
+ 'web-types-htmx',
206
+ 'test-foundry-app',
207
+ 'web-types-lit',
208
+ 'bun-plugin-httpfile',
209
+ 'open2internet',
210
+ 'vite-plugin-httpfile',
211
+
212
+ // ENS / ENS domains
213
+ '@ensdomains/vite-plugin-i18next-loader',
214
+ '@ensdomains/blacklist',
215
+ '@ensdomains/durin',
216
+ '@ensdomains/renewal',
217
+ '@ensdomains/cypress-metamask',
218
+ 'bytecode-checker-cli',
219
+ '@ensdomains/dnsprovejs',
220
+ '@ensdomains/ccip-read-dns-gateway',
221
+ '@ensdomains/ccip-read-cf-worker',
222
+ '@ensdomains/dnssec-oracle-anchors',
223
+ '@ensdomains/reverse-records',
224
+ '@ensdomains/ens-test-env',
225
+ '@ensdomains/hackathon-registrar',
226
+ '@ensdomains/renewal-widget',
227
+ 'crypto-addr-codec',
228
+ '@ensdomains/solsha1',
229
+ '@ensdomains/server-analytics',
230
+ '@ensdomains/ui',
231
+ '@ensdomains/test-utils',
232
+ '@ensdomains/mock',
233
+ '@ensdomains/ccip-read-router',
234
+ '@zapier/babel-preset-zapier', // zapier, men holder den her for oversikt
235
+ '@ensdomains/hardhat-chai-matchers-viem',
236
+ '@ensdomains/ccip-read-worker-viem',
237
+ '@zapier/browserslist-config-zapier',
238
+ '@zapier/zapier-sdk',
239
+ '@zapier/stubtree',
240
+ 'zapier-async-storage',
241
+ '@zapier/ai-actions',
242
+ '@zapier/mcp-integration',
243
+ '@zapier/spectral-api-ruleset',
244
+ '@ensdomains/address-encoder',
245
+ 'redux-router-kit',
246
+ '@ensdomains/eth-ens-namehash',
247
+ 'zapier-scripts',
248
+ '@ensdomains/buffer',
249
+ '@ensdomains/thorin',
250
+ 'zapier-platform-legacy-scripting-runner',
251
+ 'zapier-platform-schema',
252
+ '@ensdomains/dnssecoraclejs',
253
+ 'zapier-platform-core',
254
+ '@ensdomains/op-resolver-contracts',
255
+ '@ensdomains/ens-archived-contracts',
256
+ '@ensdomains/ensjs',
257
+ '@ensdomains/subdomain-registrar',
258
+ '@ensdomains/unruggable-gateways',
259
+ '@ensdomains/web3modal',
260
+ 'zapier-platform-cli',
261
+ '@ensdomains/ens-contracts',
262
+ '@ensdomains/react-ens-address',
263
+ '@ensdomains/curvearithmetics',
264
+ '@zapier/secret-scrubber',
265
+ '@ensdomains/hardhat-toolbox-viem-extended',
266
+ 'ethereum-ens',
267
+ '@ensdomains/durin-middleware',
268
+ '@ensdomains/unicode-confusables',
269
+ '@ensdomains/ensjs-react',
270
+ '@ensdomains/content-hash',
271
+ '@ensdomains/ens-avatar',
272
+ '@zapier/ai-actions-react',
273
+ '@zapier/eslint-plugin-zapier',
274
+ '@ensdomains/offchain-resolver-contracts',
275
+ '@ensdomains/ens-validation',
276
+ '@ensdomains/name-wrapper',
277
+
278
+ // diverse mcp / n8n / osv
279
+ '@hapheus/n8n-nodes-pgp',
280
+ '@markvivanco/app-version-checker',
281
+ 'claude-token-updater',
282
+ 'n8n-nodes-tmdb',
283
+ 'devstart-cli',
284
+ 'skills-use',
285
+ '@mcp-use/inspector',
286
+ 'zuper-sdk',
287
+ 'zuper-stream',
288
+ '@mcp-use/mcp-use',
289
+ 'create-mcp-use-app',
290
+ 'mcp-use',
291
+ '@mcp-use/cli',
292
+ 'zuper-cli',
293
+ '@caretive/caret-cli',
294
+ 'cpu-instructions',
295
+ 'lite-serper-mcp-server',
296
+ '@louisle2/core',
297
+ 'jan-browser',
298
+ 'exact-ticker',
299
+ 'react-library-setup',
300
+ 'orbit-soap',
301
+ '@orbitgtbelgium/mapbox-gl-draw-scale-rotate-mode',
302
+ 'token.js-fork',
303
+ 'react-component-taggers',
304
+ '@louisle2/cortex-js',
305
+ 'orbit-nebula-editor',
306
+ '@trigo/pathfinder-ui-css',
307
+ '@trigo/jsdt',
308
+ '@trigo/atrix-redis',
309
+ '@trigo/eslint-config-trigo',
310
+ '@trigo/atrix-orientdb',
311
+ '@trigo/node-soap',
312
+ 'eslint-config-trigo',
313
+ '@trigo/bool-expressions',
314
+ '@trigo/atrix-pubsub',
315
+ '@trigo/atrix-elasticsearch',
316
+ '@trigo/hapi-auth-signedlink',
317
+ '@trigo/keycloak-api',
318
+ '@trigo/atrix-soap',
319
+ '@trigo/atrix-swagger',
320
+ '@trigo/atrix-acl',
321
+ 'atrix',
322
+ 'redux-forge',
323
+ '@trigo/atrix-mongoose',
324
+ '@trigo/atrix',
325
+ 'orbit-boxicons',
326
+ 'atrix-mongoose',
327
+ 'bool-expressions',
328
+ 'react-element-prompt-inspector',
329
+ 'trigo-react-app',
330
+ '@trigo/trigo-hapijs',
331
+ '@trigo/fsm',
332
+ 'command-irail',
333
+ '@orbitgtbelgium/mapbox-gl-draw-cut-polygon-mode',
334
+ '@trigo/atrix-postgres',
335
+ '@orbitgtbelgium/time-slider',
336
+ '@orbitgtbelgium/orbit-components',
337
+ 'orbit-nebula-draw-tools',
338
+ 'typeorm-orbit',
339
+ '@mparpaillon/connector-parse',
340
+ '@mparpaillon/imagesloaded',
341
+ '@commute/market-data',
342
+ 'gitsafe',
343
+ '@osmanekrem/error-handler',
344
+ '@commute/bloom',
345
+
346
+ // masse små libs (angular, react, cli, osv.)
347
+ 'okta-react-router-6',
348
+ 'designstudiouiux',
349
+ 'itobuz-angular',
350
+ '@ifelsedeveloper/protocol-contracts-svm-idl',
351
+ 'ito-button',
352
+ '@dev-blinq/cucumber_client',
353
+ 'blinqio-executions-cli',
354
+ 'itobuz-angular-auth',
355
+ '@dev-blinq/ai-qa-logic',
356
+ 'axios-timed',
357
+ 'react-native-email',
358
+ 'tenacious-fetch',
359
+ 'kill-port',
360
+ 'jacob-zuma',
361
+ 'luno-api',
362
+ '@lessondesk/eslint-config',
363
+ 'sort-by-distance',
364
+ 'just-toasty',
365
+ 'image-to-uri',
366
+ 'react-native-phone-call',
367
+ 'formik-error-focus',
368
+ 'jquery-bindings',
369
+ '@lessondesk/babel-preset',
370
+ 'barebones-css',
371
+ 'coinmarketcap-api',
372
+ 'license-o-matic',
373
+ '@varsityvibe/api-client',
374
+ 'pico-uid',
375
+ 'hyperterm-hipster',
376
+ 'set-nested-prop',
377
+ 'bytes-to-x',
378
+ 'enforce-branch-name',
379
+ 'fittxt',
380
+ 'get-them-args',
381
+ 'react-native-retriable-fetch',
382
+ 'svelte-autocomplete-select',
383
+ 'feature-flip',
384
+ 'lint-staged-imagemin',
385
+ 'react-native-view-finder',
386
+ 'formik-store',
387
+ 'shell-exec',
388
+ 'react-native-log-level',
389
+ '@everreal/web-analytics',
390
+ 'react-native-jam-icons',
391
+ '@thedelta/eslint-config',
392
+ 'parcel-plugin-asset-copier',
393
+ 'react-native-websocket',
394
+ 'ra-data-firebase',
395
+ 'react-jam-icons',
396
+ 'react-native-fetch',
397
+ '@ifings/design-system',
398
+ 'gatsby-plugin-cname',
399
+ '@alexcolls/nuxt-ux',
400
+ 'react-native-datepicker-modal',
401
+ 'undefsafe-typed',
402
+ 'chrome-extension-downloads',
403
+ '@alexcolls/nuxt-socket.io',
404
+ 'fuzzy-finder',
405
+ 'sa-company-registration-number-regex',
406
+ 'flapstacks',
407
+ 'react-keycloak-context',
408
+ 'react-qr-image',
409
+ '@tiaanduplessis/react-progressbar',
410
+ '@lessondesk/schoolbus',
411
+ '@tiaanduplessis/json',
412
+ 'react-native-get-pixel-dimensions',
413
+ 'nanoreset',
414
+ 'next-circular-dependency',
415
+ 'url-encode-decode',
416
+ 'axios-cancelable',
417
+ 'compare-obj',
418
+ 'wenk',
419
+ 'haufe-axera-api-client',
420
+ 'obj-to-css',
421
+ 'sa-id-gen',
422
+ '@lessondesk/api-client',
423
+ '@varsityvibe/validation-schemas',
424
+ 'flatten-unflatten',
425
+ 'stoor',
426
+ '@clausehq/flows-step-jsontoxml',
427
+ '@accordproject/concerto-analysis',
428
+ 'hope-mapboxdraw',
429
+ 'count-it-down',
430
+ 'hopedraw',
431
+ '@accordproject/markdown-it-cicero',
432
+ 'piclite',
433
+ '@fishingbooker/react-swiper',
434
+ '@fishingbooker/browser-sync-plugin',
435
+ 'generator-meteor-stock',
436
+ '@fishingbooker/react-loader',
437
+ 'benmostyn-frame-print',
438
+ '@fishingbooker/react-pagination',
439
+
440
+ // voiceflow
441
+ '@voiceflow/anthropic',
442
+ '@voiceflow/voice-types',
443
+ '@voiceflow/default-prompt-wrappers',
444
+ '@voiceflow/npm-package-json-lint-config',
445
+ '@voiceflow/nestjs-mongodb',
446
+ '@voiceflow/tsconfig',
447
+ '@voiceflow/test-common',
448
+ '@voiceflow/husky-config',
449
+ '@voiceflow/commitlint-config',
450
+ '@voiceflow/git-branch-check',
451
+ 'normal-store',
452
+ '@voiceflow/prettier-config',
453
+ '@voiceflow/stylelint-config',
454
+ 'vf-oss-template',
455
+ '@voiceflow/storybook-config',
456
+ '@voiceflow/verror',
457
+ '@voiceflow/alexa-types',
458
+ '@voiceflow/nestjs-timeout',
459
+ '@voiceflow/serverless-plugin-typescript',
460
+ '@voiceflow/voiceflow-types',
461
+ 'shelf-jwt-sessions',
462
+ '@hover-design/react',
463
+ '@voiceflow/base-types',
464
+ '@voiceflow/eslint-config',
465
+ '@voiceflow/fetch',
466
+ '@voiceflow/common',
467
+ '@voiceflow/eslint-plugin',
468
+ '@voiceflow/exception',
469
+ '@voiceflow/dtos-interact',
470
+ '@voiceflow/google-types',
471
+ '@voiceflow/nestjs-common',
472
+ '@voiceflow/pino',
473
+ '@voiceflow/sdk-runtime',
474
+ '@voiceflow/nestjs-rate-limit',
475
+ '@voiceflow/openai',
476
+ 'dialogflow-es',
477
+ '@voiceflow/widget',
478
+ 'arc-cli-fc',
479
+ 'composite-reducer',
480
+ 'bidirectional-adapter',
481
+ '@antstackio/express-graphql-proxy',
482
+ '@antstackio/json-to-graphql',
483
+ '@voiceflow/body-parser',
484
+ '@voiceflow/logger',
485
+ '@antstackio/eslint-config-antstack',
486
+ '@voiceflow/vitest-config',
487
+ '@faq-component/core',
488
+ '@pruthvi21/use-debounce',
489
+ '@voiceflow/api-sdk',
490
+ '@hover-design/core',
491
+ '@faq-component/react',
492
+ '@voiceflow/semantic-release-config',
493
+ '@voiceflow/vite-config',
494
+ '@voiceflow/circleci-config-sdk-orb-import',
495
+ '@voiceflow/backend-utils',
496
+ '@voiceflow/slate-serializer',
497
+ '@voiceflow/google-dfes-types',
498
+ 'n8n-nodes-viral-app',
499
+ '@accordproject/markdown-docx',
500
+ '@clausehq/flows-step-sendgridemail',
501
+ '@lpdjs/firestore-repo-service',
502
+ '@trefox/sleekshop-js',
503
+ 'invo',
504
+ 'jsonsurge',
505
+ 'mon-package-react-typescript',
506
+ 'rediff',
507
+ 'solomon-api-stories',
508
+ 'solomon-v3-stories',
509
+ 'solomon-v3-ui-wrapper',
510
+ 'tcsp-draw-test',
511
+ 'uplandui',
512
+ ];
513
+
514
+ function checkFile(filePath) {
515
+ if (!fs.existsSync(filePath)) {
516
+ console.log(`Ingen fil: ${filePath}`);
517
+ return;
518
+ }
519
+
520
+ const json = JSON.parse(fs.readFileSync(filePath, 'utf8'));
521
+ const packages = json.packages || {};
522
+
523
+ const hits = [];
524
+
525
+ for (const pkgPath of Object.keys(packages)) {
526
+ const pkg = packages[pkgPath];
527
+
528
+ // Finn navn:
529
+ // 1) Bruk pkg.name hvis det finnes (root)
530
+ // 2) Ellers hent det ut fra node_modules-stien
531
+ let name = pkg.name;
532
+ if (!name) {
533
+ if (pkgPath === '') {
534
+ // root – prøv å hente fra shrinkwrap.name om det finnes
535
+ name = json.name || undefined;
536
+ } else {
537
+ const marker = 'node_modules/';
538
+ const idx = pkgPath.lastIndexOf(marker);
539
+ if (idx >= 0) {
540
+ name = pkgPath.slice(idx + marker.length); // f.eks. "@posthog/ai"
541
+ } else {
542
+ name = pkgPath; // fallback
543
+ }
544
+ }
545
+ }
546
+
547
+ const version = pkg.version;
548
+ // Debug hvis du vil se hva som faktisk sjekkes:
549
+ console.log(`Sjekker pakke: ${name}`);
550
+
551
+ if (!name) continue;
552
+
553
+ for (const pattern of suspiciousPackages) {
554
+ if (name === pattern || name.startsWith(pattern)) {
555
+ hits.push({ name, version, pattern, path: pkgPath });
556
+ break;
557
+ }
558
+ }
559
+ }
560
+
561
+ if (hits.length === 0) {
562
+ console.log(`Ingen mistenkte pakker funnet i ${filePath}`);
563
+ } else {
564
+ console.log(`Fant mistenkte pakker i ${filePath}:`);
565
+ console.table(hits);
566
+ }
567
+ }
568
+
569
+
570
+ checkFile(path.resolve('npm-shrinkwrap.json'));